使用Apache POI事件模型读取空单元格

时间:2012-12-28 09:46:27

标签: java apache-poi

我有一个包含大量列的巨大excel文件,如下所示: -

Column1 Column2 Column3 Column4 Column5
abc             def             ghi
        mno             pqr
......

当我在excel中打印所有值时,我的代码生成的输出是: -

abc;def;ghi;null;null

mno;pqr;null;null;null

因此,如果我们查看上面的输出,我们可以注意到POI库没有拾取我留下空白值的单元格。有没有办法让这些值为null?或者是一种识别所呈现的值跳过空白单元格的方法吗?

请注意:我没有使用usermodel(org.apache.poi.ss.usermodel),而是使用Event API来处理xls和xlsx文件。

我正在实现HSSFListener并覆盖xls文件的processRecord(记录记录)方法。对于xlsx文件,我使用的是javax.xml.parsers.SAXParser和org.xml.sax.XMLReader。

我正在使用JDK7和Apache POI 3.7。有人可以帮忙吗?

我已经看到这可能重复How to get an Excel Blank Cell Value in Apache POI?但是这不能回答我的问题,因为我正在使用Event API。

1 个答案:

答案 0 :(得分:2)

是的,它可以完成,并且Apache POI附带了几个例子。它们都与基于事件的xls / xlsx有关 - > CSV,看起来非常接近你正在做的事情。这让我担心你可能会重新发明轮子......

对于HSSF事件模型处理,您要查看的示例是XLS2CSVmra。这是由MissingRecordAwareHSSFListener

提供的

对于XSSF事件模型,您需要的示例是XLSX2CSV