想要效果
利用easypoi模板导出
excel模板
代码
public void test() {
TemplateExportParams params = new TemplateExportParams("C:\\Desktop\\模板.xlsx");
Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("addr", "西湖区");
map.put("student", "\u2611");//利用打勾的Unicode码(Hex)
map.put("in", "☑");//直接插入符号
map.put("out", "□");
String excelPath = "C:\\Desktop\\导出特殊符号测试.xlsx";
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
try {
OutputStream out = Files.newOutputStream(Paths.get(excelPath));
workbook.write(out);
out.close();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
log.error(excelPath + "保存失败");
}
}
得到效果
总结
导出特殊符号的两种方式:
利用Unicode码
Unicode码对应的勾号、叉号、圈号、点号等特殊符号_编程学问网
直接插入特殊符号
通过这两种方式导出的excel的打勾只是一个特殊符号,不是可以选中或不选中的复选框,参考了别人的文章之后再改进。
参考:使用easypoi和原生poi接口实现导出excel时控制复选框选中或不选中_java 根据模板导出excel时,如何根据后台数据设置复选框的勾选-CSDN博客
可选复选框
模板
使用了excel-开发工具-插入-复选框控件,通过设置复选框格式可以选择控制是否选中的格子
代码
public void test() {
TemplateExportParams params = new TemplateExportParams("C:\\Desktop\\可控复选框模板.xlsx");
Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("addr", "西湖区");
String excelPath = "C:\\Desktop\\导出可控复选框.xlsx";
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
Sheet sheetAt = workbook.getSheetAt(0);
//控制'学生'复选框:选中-true,未选-false
Row row1 = sheetAt.getRow(6);
Cell cell1 = row1.getCell(4);
cell1.setCellValue(true);
row1.setZeroHeight(true);//隐藏复选框的关联行
//控制'在职'复选框:选中-true,未选-false
Row row2 = sheetAt.getRow(7);
Cell cell2 = row2.getCell(4);
cell2.setCellValue(true);
row2.setZeroHeight(true);//隐藏复选框的关联行
//隐藏'离职'关联行
Row row3 = sheetAt.getRow(8);
row3.setZeroHeight(true);
try {
OutputStream out = Files.newOutputStream(Paths.get(excelPath));
workbook.write(out);
out.close();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
log.error(excelPath + "保存失败");
}
}