概述

最近有个excel表用kettle做了行列转换,发现数据量过大超过excel表限制,下面记录下解决方法。


问题

在用kettle转换输出excel表时报错

b841c8d6f32d38a2fb6ccde92d06feaa.png
Excel输出 4.0 - ERROR (version 8.1.0.0-SNAPSHOT, build 8.1.0.0-SNAPSHOT from 2018-04-10 06.42.03 by WangYucai) : Error writing field (0,65536) : jxl.write.biff.RowsExceededException: The maximum number of rows permitted on a worksheet been exceededExcel输出 4.0 - ERROR (version 8.1.0.0-SNAPSHOT, build 8.1.0.0-SNAPSHOT from 2018-04-10 06.42.03 by WangYucai) : jxl.write.biff.RowsExceededException: The maximum number of rows permitted on a worksheet been exceededExcel输出 4.0 - at jxl.write.biff.WritableSheetImpl.getRowRecord(WritableSheetImpl.java:1214)Excel输出 4.0 - at jxl.write.biff.WritableSheetImpl.addCell(WritableSheetImpl.java:1151)Excel输出 4.0 - at org.pentaho.di.trans.steps.exceloutput.ExcelOutput.writeField(ExcelOutput.java:398)Excel输出 4.0 - at org.pentaho.di.trans.steps.exceloutput.ExcelOutput.writeField(ExcelOutput.java:284)Excel输出 4.0 - at org.pentaho.di.trans.steps.exceloutput.ExcelOutput.writeRowToFile(ExcelOutput.java:190)Excel输出 4.0 - at org.pentaho.di.trans.steps.exceloutput.ExcelOutput.processRow(ExcelOutput.java:147)Excel输出 4.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)Excel输出 4.0 - at java.lang.Thread.run(Thread.java:748)

解决方法

kettle工具的2003excel版本每个sheet只能支持65536行,只需要在kettle输出控件选为microsoft excel。

1fd45281a12ef0ea219d63f032be5108.png

扩展名选为2007版本的;并且勾上Stream XSLX DATA 选项,支持流的形式写文件,不然大数量的时候写入不了excel,报内存溢出。

f9d15f2608d5978963bdd0b3ddb94256.png

测试

重新选择输出后可以正常输出结果。

ee3e009ba97a09286c92b0bf8ed4b3e4.png

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

f874eac349b6ed6080dc19fc078e4d5e.gif
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐