用POI操作Excel的一些心得(一)

最近在修改一个前任同事留下来的JAVA操作Excel表的小程序,修改出一些心得,记录下来,大家分享。

由于之前的程序使用的是模板的方式,定义好了样式,甚至连最大的行数都用边框定义好了。这样非常不灵活,用户的数据量一大,会报空指针异常。一条数据也写不进去了。

查找原因,原来是POI里的两个方法不同导致的!

一个是随着循环变量的递增,创建新的数据行。
HSSFRow row = sheet.createRow(rowCount++);
HSSFCell cell = row.createCell(cellCount++);
一个是随着循环变量的递增,读取模板的数据行。
HSSFRow row = sheet.getRow(rowCount++);
HSSFCell cell = row.getCell(cellCount++);
前者比较灵活。用户有多少数据量,它就创建多少数据行,既不会抛空指针,也不会有单元格的冗余。

后者比较死板。用户的数据量增加,模板就必须增加到相应的行数,否则会抛空指针,而且存在着单元格冗余的情况,假设模板增加到了1000行,而用户这次只有1条数据(不是我夸张,是真实情况,用户多的时候成百上千条,少的时候只有几行,甚至1行数据),这时就会产生大量冗余单元格,文件大小没有必要的增加了很多。

所以,建议大家,用模板时,只把标题,表头,列名等永远不变的信息放在模板里,至于那些动态添加的记录,以及样式,使用前一种方式动态增加即可!

更多在这个项目中,及今后工作中遇到的问题,积累的经验。尽请期待以后的博文。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值