关于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”) 该方法不限制

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值