本文主要是介绍EasyExcel 隐藏列、动态列、单元格下拉框选择数据、单元格文本格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
项目中用到EasyExcel读写Excel,用到了一下功能,这里做个笔记:
- 隐藏列:隐藏某些列
- 动态列:固定列 + 动态的生成Excel列
- 单元格下拉框选择数据:设计单元格下拉数据,并且加校验
- 单元格文本格式:设置文本格式
EasyExcel 版本:3.0.x
EasyExcel官方文档
核心代码实现
- 隐藏列 注册一个EasyExcel内置的宽度策略对象即可
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
- 动态列:这里使用的 List 集合
List<List<String>> heads = new ArrayList<>();
List<String> head0 = new ArrayList<>();
// 固定列
head0.add("ID");
heads.add(head0);
List<String> head1 = new ArrayList<>();
head1.add("Name");
heads.add(head1);
// 动态列
for (xxx) {List<String> dnys = new ArrayList<>();dnys.add("Colxx");heads.add(.);
}
List<String> end = new ArrayList<>();
end.add("End");
heads.add(end);// 设置列
EasyExcel.write(out).head(heads)
- 单元格下拉框选择数据:注册一个SheetWriteHandler接口实现类 afterSheetCreate 方法,这里使用匿名内部类。
.registerWriteHandler(new SheetWriteHandler() {@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {Sheet sheet = writeSheetHolder.getSheet();DataValidationHelper helper = sheet.getDataValidationHelper();// 设置下拉列表单元格的位置首行 末行 首列 末列CellRangeAddressList rangeList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);// 设置下拉列表的值:strArr 为字符串数组,下拉框的值DataValidationConstraint constraint = helper.createExplicitListConstraint(strArr);// 设置错误提示DataValidation validation = helper.createValidation(constraint, rangeList);// 非下拉选项的值不能输入validation.setErrorStyle(DataValidation.ErrorStyle.STOP);validation.setSuppressDropDownArrow(true);validation.setShowErrorBox(true);validation.createErrorBox("提示", "请选择/输入下拉选项中的值");sheet.addValidationData(validation);}}
)
- 单元格隐藏、单元格文本格式:注册一个CellWriteHandler,覆盖afterCellDispose方法,这里使用匿名类
.registerWriteHandler(new CellWriteHandler() {@Overridepublic void afterCellDispose(CellWriteHandlerContext context) {// 设置隐藏列context.getWriteSheetHolder().getSheet().setColumnHidden(0, true);for (WriteCellData<?> writeCellData : context.getCellDataList()) {// 设置文本格式DataFormatData dataFormatData = new DataFormatData();dataFormatData.setIndex((short) 49);writeCellData.getOrCreateStyle().setDataFormatData(dataFormatData);}}
})
最后指定sheet名称,写入数据即可。
.sheet("导入").doWrite(datas)
这篇关于EasyExcel 隐藏列、动态列、单元格下拉框选择数据、单元格文本格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!