我们正在使用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()”不起作用或不起作用吗?还有另一种检测隐藏行的方法吗? (隐藏的列也是一个很好的奖励,但相关性稍差一些)
答案 0 :(得分:6)
getRowStyle
通常应该像你想象的那样工作。
否则,您可以检查行的高度,因为隐藏行的高度往往设置为0。
使用row.getHeight()
或row.getZeroHeight()
。
答案 1 :(得分:3)
尝试了几种方法后,row.getZeroHeight()
正确地识别了隐藏的行。对于那些坚持使用Apache POI&lt; = 3.7版本的人来说,这可能是唯一的解决方案。