3

我们正在使用 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())
        ...

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

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

“getHidden()”是不起作用还是不像我认为的那样起作用?还有另一种检测隐藏行的方法吗?(隐藏列也将是一个不错的奖励,但相关性稍差一些)

4

2 回答 2

8

getRowStyle通常应该按您的预期工作。

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

于 2012-05-10T08:22:18.367 回答
3

After trying a few approaches, row.getZeroHeight() worked correctly for identifying hidden row. Also for those who are stuck with Apache POI <= 3.7 version this may be the only solution.

于 2012-06-19T22:35:33.510 回答