3

エクセルを解析するためにapachepoi3.8を使用しています。ユースケースにジャンクデータが含まれる傾向があるため、非表示の行を検出(およびスキップ)できる必要があります。

これはうまくいくはずです:

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()」は機能しませんか、それとも私が思うように機能しませんか?非表示の行を検出する別の方法はありますか?(非表示の列も素晴らしいボーナスですが、関連性の低いATMです)

4

2 に答える 2

8

getRowStyle通常は想定どおりに機能するはずです。

それ以外の場合は、非表示の行の高さが0に設定される傾向があるため、行の高さを確認できます。row.getHeight()またはを使用しrow.getZeroHeight()ます。

于 2012-05-10T08:22:18.367 に答える
3

いくつかのアプローチを試した後、row.getZeroHeight()隠された行を識別するために正しく機能しました。また、Apache POI <= 3.7バージョンで立ち往生している人にとっては、これが唯一の解決策かもしれません。

于 2012-06-19T22:35:33.510 に答える