//工具类 public class ExcelUtils { public static void outExcelDemo(HttpServletResponse response )throws IOException { //创建HSSFWorkbook对象(excel的文档对象) HSSFWorkbook wb = new HSSFWorkbook(); //创建sheet对象(excel的表单) HSSFSheet sheet=wb.createSheet("sheet1"); //创建第一行,这里即是表头。行的最小值是0,代表每一行,上限没研究过,可参考官方的文档 HSSFRow row1=sheet.createRow(0); //在这一行创建单元格,并且将这个单元格的内容设为“账号”,下面同理。 //列的最小值标识也是0 row1.createCell(0).setCellValue("账号"); row1.createCell(1).setCellValue("用户名"); row1.createCell(2).setCellValue("日期"); row1.createCell(3).setCellValue("是否完成"); //第二行 HSSFRow row2=sheet.createRow(1); row2.createCell(0).setCellValue("123456"); row2.createCell(1).setCellValue("张三"); row2.createCell(2).setCellValue("2019-08-05"); row2.createCell(3).setCellValue("是"); //第三行 HSSFRow row3=sheet.createRow(2); row3.createCell(0).setCellValue("123456"); row3.createCell(1).setCellValue("张三"); row3.createCell(2).setCellValue("2019-08-01"); row3.createCell(3).setCellValue("否"); //这个就是合并单元格 //参数说明:1:开始行 2:结束行 3:开始列 4:结束列 //比如我要合并 第二行到第四行的 第六列到第八列 sheet.addMergedRegion(new CellRangeAddress(1,3,5,7)); sheet.addMergedRegion(new CellRangeAddress(1,2,0,0)); //输出Excel文件 OutputStream output=response.getOutputStream(); response.reset(); response .setHeader("Content-disposition", "attachment; filename=demo.xlsx"); response.setContentType("application/x-xls"); wb.write(output); output.close(); }
}
//controller调用
@GetMapping("export") public void export(HttpRequest request, HttpServletResponse response) throws IOException { ExcelUtils.outExcelDemo(response); }
//导出结果