第一步:需要引入的maven依赖
<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.0.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.0.0</version> </dependency> </dependencies>
或:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.3</version>
</dependency>
第二步:创建一个EXCEL
// 创建一个工作簿
Workbook workbook = new XSSFWorkbook();
// 创建一个工作表
Sheet sheet = workbook.createSheet("table");
// 创建一行
Row row = sheet.createRow(0);
// 创建一个单元格并设置值
Cell cell = row.createCell(0);
cell.setCellValue("第一个excel");
第三步:增加单元格样式
// 设置单元格样式 CellStyle cellStyle = workbook.createCellStyle(); // 设置边框 cellStyle.setBorderBottom(BorderStyle.THIN); cellStyle.setBorderLeft(BorderStyle.THIN); cellStyle.setBorderRight(BorderStyle.THIN); cellStyle.setBorderTop(BorderStyle.THIN); // 设置单元格样式 cell.setCellStyle(cellStyle); // 合并单元格参数:开始行,结束行,开始列,结束列 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 1)); // 设置自动换行 cellStyle.setWrapText(true);//合并单元格边框消失的解决方式
CellRangeAddress cellRangeAddress1 = new CellRangeAddress(1, 1, 0, 7);
sheet.addMergedRegion(cellRangeAddress1);
RegionUtil.setBorderBottom(BorderStyle.THIN, cellRangeAddress1, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, cellRangeAddress1, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, cellRangeAddress1, sheet);
RegionUtil.setBorderTop(BorderStyle.THIN, cellRangeAddress1, sheet);
第四步:将工作簿写入文件并下载
// 设置响应头 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); String fileName = "中文文件名.xlsx"; String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20"); response.setHeader("Content-Disposition", "attachment; filename="+encodedFileName ); // 将工作簿写入响应输出流 workbook.write(response.getOutputStream()); // 关闭工作簿 workbook.close();