使用apache poi检测excel中的隐藏单元格

时间:2012-05-10 08:09:54

标签: java apache excel apache-poi

我们正在使用apache poi 3.8来解析excel。我们需要能够检测(并跳过)隐藏的行,因为它们往往在我们的用例中包含垃圾数据。

这似乎应该有效:

row.isFormatted() && row.getRowStyle().getHidden()

但是似乎没有任何行级格式(getRowStyle()总是返回null)。作为最后的手段,我们认为检查单元格样式可能有效:

for (int i = 0; i < row.getLastCellNum(); i++) {
    Cell cell = row.getCell(i);
    if (cell != null && cell.getCellStyle() != null && cell.getCellStyle().getHidden())
        ...

但是对于我们获得的每一行(上面的循环中的自定义输出):

Cell 0 is not hidden org.apache.poi.hssf.usermodel.HSSFCellStyle@1b9142d0 / false

“getHidden()”不起作用或不起作用吗?还有另一种检测隐藏行的方法吗? (隐藏的列也是一个很好的奖励,但相关性稍差一些)

2 个答案:

答案 0 :(得分:6)

getRowStyle通常应该像你想象的那样工作。

否则,您可以检查行的高度,因为隐藏行的高度往往设置为0。 使用row.getHeight()row.getZeroHeight()

答案 1 :(得分:3)

尝试了几种方法后,row.getZeroHeight()正确地识别了隐藏的行。对于那些坚持使用Apache POI&lt; = 3.7版本的人来说,这可能是唯一的解决方案。