C++を使用して複雑な条件に合致するレコードを表示するMicrosoft Excelの高度なフィルターを適用

可能な使用シナリオ

Microsoft Excelでは、複合条件を満たすレコードを表示するためにワークシートデータに 高度なフィルター を適用できます。Excelの データ > 詳細設定 コマンドを使ってこのフィルターを適用することができます(スクリーンショット参照)。

todo:image_alt_text

Aspose.Cells もまた、 GetAdvancedFilter() メソッドを使用して高度なフィルターを適用可能です。Microsoft Excelと同様に、以下のパラメータを受け付けます。

isFilter

リストをその場でフィルタ処理するかどうかを示します。

listRange

リストの範囲。

criteriaRange

基準の範囲。

copyTo

データをコピーする範囲。

uniqueRecordOnly

唯一の行を表示またはコピーします。

複雑な基準を満たすレコードを表示するMicrosoft Excelの高度なフィルタの適用

次のサンプルコードは、サンプルExcelファイルに高度なフィルターを適用し、出力Excelファイルを生成します。スクリーンショットは両方のファイルを比較表示しています。スクリーンショット内のデータは、複雑な条件に従ってフィルタリングされています。

todo:image_alt_text

サンプルコード

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C

    // Source directory path
    U16String sourceDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outputDir(u"..\\Data\\02_OutputDirectory\\");

    // Load your source workbook
    Workbook workbook(sourceDir + u"sampleAdvancedFilter.xlsx");

    // Access first worksheet
    Worksheet ws = workbook.GetWorksheets().Get(0);

    // Apply advanced filter on range A5:D19 and criteria range is A1:D2
    // Besides, we want to filter in place
    // And, we want all filtered records not just unique records
    ws.Advanced_Filter(true, u"A5:D19", u"A1:D2", u"", false);

    // Save the workbook in xlsx format
    workbook.Save(outputDir + u"outputAdvancedFilter.xlsx", SaveFormat::Xlsx);

    std::cout << "Advanced filter applied successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}