10.1 导入时为啥这行为空还读取 或者为啥只有3行却读取了100行数据
在导入参数ImportParams 有一个属性keyIndex
/**
* 主键设置,如何这个cell没有值,就跳过 或者认为这个是list的下面的值
* 大家不理解,去掉这个
*/
private Integer keyIndex = null;
最早是默认为0的,但是很多说有问题,就取消默认值了,如果你遇到上面的问题,请不他改为你肯定不为空的一列比如0,就可以解决上面问题了
10.2 模板如何合并单元格
提供了PoiMergeCellUtil类供大家生成wb之后,自己再调用
/**
* 纵向合并相同内容的单元格
*
* @param sheet
* @param startRow 开始行
* @param columns 需要处理的列
*/
public static void mergeCells(Sheet sheet, int startRow, Integer... columns) {
if (columns == null) {
throw new ExcelExportException("至少需要处理1列");
}
Map<Integer, int[]> mergeMap = new HashMap<Integer, int[]>();
for (int i = 0; i < columns.length; i++) {
mergeMap.put(columns[i], null);
}
mergeCells(sheet, mergeMap, startRow, sheet.getLastRowNum());
}
这个逻辑是,只要一列连续值是相同的就合并
10.3 如何让单元格是数组
参考2.7样式自定义,让你这个单元格是数组类型的样式就可以了
如果是模板 n:
10.4 类找不到怎么办
https://www.findjar.com/index.x
10.5 replace NULL值问题
@excel replace = { “客户银行卡OA01”, “客户金账户OA02”, “客户存管账户OA03”,”渠道金账户OA04”, “营销款账户_OA05”}
private String outAccountType
当outAccountType 值为null的时候,excel会转为 null字符串
可以这么配置“_null”,就可以解决上述问题
@Excel(name = "出账账户类型", width = 20, replace = { "客户银行卡_OA01", "客户金账户_OA02", "客户存管账户_OA03"
,"渠道金账户_OA04", "营销款账户_OA05", "_null"}, orderNum = "6")
10.6 无表头或者表头重复不好判断如何解决
fixedIndex 字段可以直接让你固定列跳过那些判断直接读取数据
if (excelEntity.getFixedIndex() != -1) {
temp.put("FIXED_" + excelEntity.getFixedIndex(), excelEntity);
} else {
temp.put(excelEntity.getName(), excelEntity);
}
你可以在@Excel上使用,也可以在自己ExcelImportEntity是写
10.7 模板导出一对多,如何合并单元格和循环
作者:悟耘信息 创建时间:2020-04-09 15:22
最后编辑:悟耘信息 更新时间:2022-09-04 22:15
最后编辑:悟耘信息 更新时间:2022-09-04 22:15