使用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();
}
//使用模板文件生成Excel
Workbook 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
连接最后可以看到