使用POI导出Excel(并使用公式)
-
使用java直接生成Excel并填充数据
可以参考POI官方文档,就是对Sheet,row,cell,Formula等操作,
https://poi.apache.org/components/index.html
这种方式也可以生成复杂样式的Excel,但是代码量非常大,简单的Excel可以使用此种操作方式 -
新建Excel,然后java读取并填充数据
这种方式适合生成复杂样式的Excel。也可以在模板中指定公式,填充数据后公式自动运算
新建Excel模板
具体代码
@RequestMapping("/demo")public String exportExcel(HttpServletResponse response) {response.setContentType("application/binary;charset=UTF-8");ServletOutputStream out = null;try {out = response.getOutputStream();//spring自带的读取文件(文件放在resource下)Resource resource = new ClassPathResource("template/evaluate.xls");try { response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(resource.getFilename(), "UTF-8"));} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}//使用模板文件生成ExcelWorkbook workbook = HSSFWorkbookFactory.create(resource.getFile());Sheet sheet = workbook.getSheetAt(0);//模拟填充数据for (int i = 0; i < 10; i++) {Row row = sheet.getRow(i);row.createCell(0).setCellValue(i);row.createCell(1).setCellValue(i + 1);}sheet.setForceFormulaRecalculation(true);workbook.write(out);} catch (Exception e) {e.printStackTrace();} finally {if (out != null) {try {out.flush();out.close();} catch (IOException e) {e.printStackTrace();}}}return "";}
结果展示
注意:POI并不是支持所有的Excel中的公式
https://poi.apache.org/components/spreadsheet/eval-devguide.html
连接最后可以看到