关于Hutool的ExcelWriter 用法

最近写了导出遇到的问题以及方法使用在此总结一下

方法:

//设置Excel的第一个工作表名字
writer.renameSheet("汇总");
//设置工作表固定开头标题列数据 
writer.addHeaderAlias("day", "日期"); 
//合并单元格--第一个数字 从第几行开始合并 第二个数字 从第几行结束 后面两个数字是列
writer.merge(1, 2, 0, 0, entry.getKey(), true); 
//设置列的宽度 第一个数字第几列 第二个数字长度多少
writer.setColumnWidth(0, 20);
//清除标题列 比如第一个工作表(sheet1) 标题ABC 第二个工作表(sheet2) 标题ADNB 可以使用该方法清除
writer.clearHeaderAlias();
// 只导出有别名的字段
writer.setOnlyAlias(true);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(list, true);

遇到的问题:1.导出报错 java.lang.IllegalArgumentException: Attempting to write a row[1] in the range [0,49] that is already written to disk.

翻译:试图写入已经写入磁盘的[0,49]范围内的行[1]。
原因 我用的 ExcelWriter writer = ExcelUtil.getBigWriter();方法创建的 实现源码当中限制了每次写入临时内存100条
并不断的写入临时文档,最终将所有的临时文档合并起来,如果一个行已经写入临时文档了,就不能再修改了,因此在源代码中直接限制了重复创建并写同一栏,并在此抛出异常
解决办法 使用ExcelWriter writer = ExcelUtil.getWriter(“F:/test/1.xlsx”) 该方法不限制

你可能感兴趣的:(java)