Excelスプレッドシートで情報をフィルタリングすることは重要な機能です。これにより、無関係なデータを非表示にして、特定の基準を満たすデータのみを表示できます。データのフィルタリングが役立つ場合があるかもしれません。たとえば、組織は、販売戦略を分析および改善するために、販売レポートからパフォーマンスの低い製品を除外したい場合があります。この記事では、C++を使用してExcelファイルでオートフィルターを追加または削除する方法を学習します。

Excelファイルでオートフィルターを追加および削除するためのC++API

Aspose.Cells for C++ APIを使用して、Excelファイルのオートフィルターを追加および削除します。これは、MicrosoftExcelをインストールしなくてもExcelファイルを作成、読み取り、変更できるネイティブC++ライブラリです。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。

PM> Install-Package Aspose.Cells.Cpp

C++を使用してExcelファイルにオートフィルターを適用する

セルの範囲にオートフィルターを適用できます。オートフィルターを使用すると、指定した範囲のセルの値を並べ替えてフィルター処理できます。以下は、Excelファイルにオートフィルターを追加する手順です。

次のサンプルコードは、C++を使用してExcelファイル内のセルの範囲にオートフィルターを適用する方法を示しています。

// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");

// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");

// ソースExcelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Book3.xlsx")));

// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// セル範囲を指定してオートフィルターを作成する
worksheet->GetIAutoFilter()->SetRange(new String("A1:B1"));

// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("AutoFilter_out.xlsx")));
サンプルコードによって生成された出力ファイルの画像

サンプルコードによって生成された出力ファイルの画像

C++を使用してExcelファイルに日付オートフィルターを追加する

Excelファイルには、日付に基づくデータが含まれている場合があります。さまざまな日付に基づいてデータをフィルタリングおよび分析する必要があるシナリオに遭遇する可能性があります。したがって、日付フィルターはそのようなシナリオで役立つことがわかります。以下は、Excelファイルに日付オートフィルターを追加する手順です。

次のサンプルコードは、C++を使用してExcelファイルに日付オートフィルターを追加する方法を示しています。

// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");

// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");

// ソースExcelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Book4.xlsx")));

// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// AddDateFilter関数を呼び出して、フィルターを適用します
worksheet->GetIAutoFilter()->AddDateFilter(0, DateTimeGroupingType_Month, 2018, 1, 1, 0, 0, 0);

// 更新関数を呼び出して、ワークシートを更新します
worksheet->GetIAutoFilter()->Refresh();

// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("DateFilter_out.xlsx")));

C++を使用してExcelファイルに動的日付オートフィルターを追加する

年や当月の前の月に関係なく、月など、より一般的な日付フィルターが必要になる場合があります。このようなシナリオでは、動的オートフィルターを使用してデータをフィルター処理できます。以下は、動的日付オートフィルターを使用してデータをフィルター処理する手順です。

次のサンプルコードは、C++を使用してExcelファイルに動的日付オートフィルターを追加する方法を示しています。

// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");

// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");

// ソースExcelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Book4.xlsx")));

// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// DynamicFilter関数を呼び出してフィルターを適用します
worksheet->GetIAutoFilter()->DynamicFilter(0, DynamicFilterType_Februray);

// 更新関数を呼び出して、ワークシートを更新します
worksheet->GetIAutoFilter()->Refresh();

// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("DynamicDateAutoFilter_out.xlsx")));

C++を使用してExcelファイルにカスタムオートフィルターを適用する

カスタムオートフィルターを適用する場合は、C++API用のAspose.Cellsで対応できます。 APIを使用すると、特定の要件に基づいて、Excelファイルにカスタムオートフィルターを適用できます。以下は、Excelファイルにカスタムオートフィルターを追加する手順です。

次のサンプルコードは、C++を使用してExcelファイルにカスタムオートフィルターを追加する方法を示しています。

// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");

// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");

// ソースExcelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("sampleCountryNames.xlsx")));

// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// カスタム関数を呼び出してフィルターを適用します
worksheet->GetIAutoFilter()->Custom(0, FilterOperatorType_Equal, new String("Brazil"));

// 更新関数を呼び出して、ワークシートを更新します
worksheet->GetIAutoFilter()->Refresh();

// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("CustomFilter_out.xlsx")));

Excelファイルからオートフィルターを削除します

前のセクションでは、Excelファイルにさまざまなオートフィルターを追加する方法を学びました。オートフィルターの追加に加えて、Aspose.Cells for C++APIを使用してオートフィルターを削除することもできます。以下は、Excelファイルからオートフィルターを削除する手順です。

次のサンプルコードは、C++を使用してExcelファイルからオートフィルターを削除する方法を示しています。

// ソースディレクトリのパス。
StringPtr srcDir = new String("SourceDirectory\\");

// 出力ディレクトリパス。
StringPtr outDir = new String("OutputDirectory\\");

// ソースExcelファイルをロードします
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("SampleAutoFilter.xlsx")));

// Excelファイルの最初のワークシートにアクセスします
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// オートフィルターを削除する
worksheet->RemoveAutoFilter();

// Excelファイルを保存します
workbook->Save(outDir->StringAppend(new String("RemoveAutoFilter_out.xlsx")));

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、C++を使用してExcelファイルにオートフィルターを追加および削除する方法を学習しました。具体的には、デフォルト、日付、動的日付、およびカスタムオートフィルターを追加する方法を学習しました。また、C++APIのAspose.Cellsを使用してオートフィルターを削除する方法も確認しました。 APIは、Excelファイルを操作するための多くの追加機能を提供します。 公式ドキュメントにアクセスすると、APIの詳細を調べることができます。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。

関連項目