ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

java设置可供下载的excel模板文件

2026/9/11 1:53:42 拓冰建站 浏览量
java设置可供下载的excel模板文件

controller

@GetMapping("/download/excel")  
@Operation(summary = "下载技术引入Excel模板")  
public void downloadTemplateExcel(HttpServletResponse response) {  technologyService.getTechnologyExcelModel(response);  
}

service

public void getTechnologyExcelModel(HttpServletResponse response) {  List<TechnologyImportExcelDto> technologyImportExcelDtoList = getTechnologyImportExcelVOList();  File file;  try {  //使用临时文件  file = File.createTempFile("开源技术导入模板", ".xlsx");  FileOutputStream fileOutputStream = new FileOutputStream(file);  ExportParams params = new ExportParams("表格标题", "Sheet1", ExcelType.XSSF);  String tipsMessage = "开源技术导入需遵循以下规则:xxx";  params.setTitle(tipsMessage);  Workbook workbook = ExcelExportUtil.exportExcel(params, TechnologyImportExcelDto.class, technologyImportExcelDtoList);  // 获取Sheet对象  Sheet sheet = workbook.getSheetAt(0); // 只有一个Sheet  // 设置标题行样式  Row titleRow = sheet.getRow(0); // 标题在第一行  CellStyle titleStyle = workbook.createCellStyle();  titleStyle.setAlignment(HorizontalAlignment.LEFT); // 设置水平对齐方式为左对齐  titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 设置垂直对齐方式为居中  titleStyle.setWrapText(true); // 设置文本自动换行  // 设置边框  titleStyle.setBorderBottom(BorderStyle.THIN);  titleStyle.setBorderTop(BorderStyle.THIN);  titleStyle.setBorderLeft(BorderStyle.THIN);  titleStyle.setBorderRight(BorderStyle.THIN);  // 设置标题行每个单元格的样式  for (Cell cell : titleRow) {  cell.setCellStyle(titleStyle);  }  // 设置行高  titleRow.setHeightInPoints(titleRow.getHeightInPoints() * 4); // 设置为五行字的高度  // 设置字体加粗  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的输出流中,同时设置响应的Header字段  try (InputStream inputStream = new FileInputStream(file);  //获取response的输出流对象  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(  "系统软件/固件",  "模板", "x",  "1.0.0",  "GPL-2.0",  "http://xx.com",  "5",  "2023-03-15 14:17:02",  "http://download.com",  "描述内容");  technologyImportExcelDtoList.add(technologyImportExcelDto);  return technologyImportExcelDtoList;  
}