用POI操作Excel的一些经验(一)

用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行数据),这时就会产生大量冗余单元格,文件大小没有必要的增加了很多。

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

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