controller
@GetMapping("/download/excel")
@Operation(summary = "下載技術(shù)引入Excel模板")
public void downloadTemplateExcel(HttpServletResponse response) {
technologyService.getTechnologyExcelModel(response);
}
service
public void getTechnologyExcelModel(HttpServletResponse response) {
List<TechnologyImportExcelDto> technologyImportExcelDtoList = getTechnologyImportExcelVOList();
File file;
try {
//使用臨時(shí)文件
file = File.createTempFile("開源技術(shù)導(dǎo)入模板", ".xlsx");
FileOutputStream fileOutputStream = new FileOutputStream(file);
ExportParams params = new ExportParams("表格標(biāo)題", "Sheet1", ExcelType.XSSF);
String tipsMessage = "開源技術(shù)導(dǎo)入需遵循以下規(guī)則:xxx";
params.setTitle(tipsMessage);
Workbook workbook = ExcelExportUtil.exportExcel(params, TechnologyImportExcelDto.class, technologyImportExcelDtoList);
// 獲取Sheet對(duì)象
Sheet sheet = workbook.getSheetAt(0); // 只有一個(gè)Sheet
// 設(shè)置標(biāo)題行樣式
Row titleRow = sheet.getRow(0); // 標(biāo)題在第一行
CellStyle titleStyle = workbook.createCellStyle();
titleStyle.setAlignment(HorizontalAlignment.LEFT); // 設(shè)置水平對(duì)齊方式為左對(duì)齊
titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 設(shè)置垂直對(duì)齊方式為居中
titleStyle.setWrapText(true); // 設(shè)置文本自動(dòng)換行
// 設(shè)置邊框
titleStyle.setBorderBottom(BorderStyle.THIN);
titleStyle.setBorderTop(BorderStyle.THIN);
titleStyle.setBorderLeft(BorderStyle.THIN);
titleStyle.setBorderRight(BorderStyle.THIN);
// 設(shè)置標(biāo)題行每個(gè)單元格的樣式
for (Cell cell : titleRow) {
cell.setCellStyle(titleStyle);
}
// 設(shè)置行高
titleRow.setHeightInPoints(titleRow.getHeightInPoints() * 4); // 設(shè)置為五行字的高度
// 設(shè)置字體加粗
Font font = workbook.createFont();
font.setBold(true);
titleStyle.setFont(font);
workbook.write(fileOutputStream);
fileOutputStream.close();
workbook.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
//下載,讀取文件流并將其添加到response的輸出流中,同時(shí)設(shè)置響應(yīng)的Header字段
try (InputStream inputStream = new FileInputStream(file);
//獲取response的輸出流對(duì)象
OutputStream outputStream = response.getOutputStream()) {
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), StandardCharsets.UTF_8));
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
IOUtils.copy(inputStream, outputStream);
outputStream.flush();
} catch (Exception e) {
throw new RuntimeException();
} finally {
//清除文件
file.delete();
}
}
@NotNull
private static List<TechnologyImportExcelDto> getTechnologyImportExcelVOList() {
List<TechnologyImportExcelDto> technologyImportExcelDtoList = new ArrayList<>();
TechnologyImportExcelDto technologyImportExcelDto = new TechnologyImportExcelDto(
"系統(tǒng)軟件/固件",
"模板",
"x",
"1.0.0",
"GPL-2.0",
"http://xx.com",
"5",
"2023-03-15 14:17:02",
"http://download.com",
"描述內(nèi)容");
technologyImportExcelDtoList.add(technologyImportExcelDto);
return technologyImportExcelDtoList;
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-805465.html
文章來源:http://www.zghlxwxcb.cn/news/detail-805465.html
到了這里,關(guān)于java設(shè)置可供下載的excel模板文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!