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

nab*_*lex 3 java apache excel apache-poi

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

这似乎应该工作:

row.isFormatted() && row.getRowStyle().getHidden()
Run Code Online (Sandbox Code Playgroud)

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

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

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

Cell 0 is not hidden org.apache.poi.hssf.usermodel.HSSFCellStyle@1b9142d0 / false
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*lex 7

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

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