オートフィルターを更新した後にすべての非表示の行インデックスを取得する

考えられる使用シナリオ

ワークシートのセルに自動フィルターを適用すると、一部の行が自動的に非表示になります。ただし、一部の行が Excel エンド ユーザーによって手動で既に非表示にされており、それらが自動フィルターによって非表示にされていない場合があります。したがって、どの行が自動フィルターによって非表示にされ、どの行が Excel エンド ユーザーによって手動で非表示にされているかを知ることが難しくなります。 Aspose.Cells は int[] を使用してこの問題を処理します[AutoFilter.refresh(bool hideRows)](https://reference.aspose.com/cells/java/com.aspose.cells/autofilter#refresh(boolean)) 方法。このメソッドは、自動フィルターによって非表示になり、Excel エンド ユーザーによって手動で非表示にされたすべての行の行インデックスを返します。

オートフィルターを更新した後にすべての非表示の行インデックスを取得する

をロードする次のサンプル コードを参照してください。サンプル Excel ファイルこれには、Excel エンド ユーザーによって手動で非表示にされた行が含まれています。コードは自動フィルターを適用し、int[] を使用して更新します[AutoFilter.refresh(bool hideRows)](https://reference.aspose.com/cells/java/com.aspose.cells/autofilter#refresh(boolean)自動フィルターによってすべての非表示行の行インデックスを返すメソッド。次に、非表示の行のインデックスをセルの名前と値とともにコンソールに出力します。

サンプルコード

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Load the sample Excel file
Workbook wb = new Workbook(srcDir + "sampleGetAllHiddenRowsIndicesAfterRefreshingAutoFilter.xlsx");
//Access first worksheet
Worksheet ws = wb.getWorksheets().get(0);
//Apply autofilter
ws.getAutoFilter().addFilter(0, "Orange");
//True means, it will refresh autofilter and return hidden rows.
//False means, it will not refresh autofilter but return same hidden rows.
int[] rowIndices = ws.getAutoFilter().refresh(true);
System.out.println("Printing Rows Indices, Cell Names and Values Hidden By AutoFilter.");
System.out.println("--------------------------");
for(int i=0; i<rowIndices.length; i++)
{
int r = rowIndices[i];
Cell cell = ws.getCells().get(r, 0);
System.out.println(r + "\t" + cell.getName() + "\t" + cell.getStringValue());
}

コンソール出力

Printing Rows Indices, Cell Names and Values Hidden By AutoFilter.

\--------------------------

1       A2      Apple

2       A3      Apple

3       A4      Apple

6       A7      Apple

7       A8      Apple

11      A12     Pear

12      A13     Pear