C++ ile Çalışma Kitabı veya Çalışma Sayfası Yüklenirken Nesneleri Filtrele

Olası Kullanım Senaryoları

Lütfen çalışma kitabından verileri filtrelerken LoadOptions.GetLoadFilter() özelliğini kullanın. Ancak, bireysel çalışma sayfalarından veri filtrelemek istiyorsanız, o zaman LoadFilter.StartSheet yöntemini geçersiz kılmalısınız. Lütfen LoadDataFilterOptions elde edileninden uygun değeri sağlayın ve LoadFilter ile çalışırken veya oluştururken kullanın.

LoadDataFilterOptions dizisi aşağıdaki olası değerlere sahiptir.

  • Tümü
  • KitapAyarları
  • HücreBoş
  • HücreBool
  • CellData
  • CellError
  • CellNumeric
  • CellString
  • CellValue
  • Chart
  • ConditionalFormatting
  • DataValidation
  • DefinedNames
  • DocumentProperties
  • Formula
  • Hyperlinkler
  • MergedArea
  • PivotTable
  • Settings
  • Shape
  • SheetData
  • SheetSettings
  • Structure
  • Style
  • Table
  • VBA
  • XmlMap

Çalışma Kitabını Yüklerken Filtreleme Nesneleri

Aşağıdaki örnek kodlar, çalışma kitabından grafikleri filtrelemenin nasıl yapıldığını göstermektedir. Lütfen bu kodda kullanılan örnek excel dosyasını ve bunun tarafından oluşturulan çıktı PDF’yi kontrol edin. Çıktı PDF’de, tüm grafiklerin çalışma kitabından filtrelenmiş olduğunu görebilirsiniz.

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

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

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

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

    // Filter charts from the workbook
    LoadOptions lOptions;
    lOptions.SetLoadFilter(new LoadFilter(LoadDataFilterOptions::All & ~LoadDataFilterOptions::Chart));

    // Load the workbook with the above filter
    U16String inputFilePath = srcDir + u"sampleFilterCharts.xlsx";
    Workbook workbook(inputFilePath, lOptions);

    // Save worksheet to a single PDF page
    PdfSaveOptions pOptions;
    pOptions.SetOnePagePerSheet(true);

    // Save the workbook in PDF format
    U16String outputFilePath = outDir + u"sampleFilterCharts.pdf";
    workbook.Save(outputFilePath, pOptions);

    std::cout << "Workbook saved successfully with filtered charts!" << std::endl;

    Aspose::Cells::Cleanup();
}

Çalışma Sayfasını Yüklerken Filtreleme Nesneleri

Aşağıdaki örnek kod, kaynak excel dosyasını yükler ve çalışma sayfalarından aşağıdaki verileri özel bir filtreden geçirir.

  • Tablo adı NoCharts olan çalışma sayfasından Grafikleri filtreler.
  • Tablo adı NoShapes olan çalışma sayfasından Şekilleri filtreler.
  • Tablo adı NoConditionalFormatting olan çalışma sayfasından Koşullu Biçimlendirmeyi filtreler.

Özel bir filtreden sonra kaynak excel dosyasını yüklediğinde, tüm çalışma sayfalarının resimlerini sırayla alır. Referansınız için çıktı resimleri aşağıdadır. Görebileceğiniz gibi, ilk resimde grafik yok, ikinci resimde şekiller yok ve üçüncü resimde koşullu biçimlendirme yok.

#include "Aspose.Cells.h"
using namespace Aspose::Cells;

class CustomLoadFilter : public LoadFilter
{
public:
    void StartSheet(Worksheet& sheet) override
    {
        U16String sheetName = sheet.GetName();

        if (sheetName == u"NoCharts")
        {
            // Load everything and filter charts
            SetLoadDataFilterOptions(static_cast<LoadDataFilterOptions>(static_cast<int>(LoadDataFilterOptions::All) & ~static_cast<int>(LoadDataFilterOptions::Chart)));
        }

        if (sheetName == u"NoShapes")
        {
            // Load everything and filter shapes
            SetLoadDataFilterOptions(static_cast<LoadDataFilterOptions>(static_cast<int>(LoadDataFilterOptions::All) & ~static_cast<int>(LoadDataFilterOptions::Drawing)));
        }

        if (sheetName == u"NoConditionalFormatting")
        {
            // Load everything and filter conditional formatting
            SetLoadDataFilterOptions(static_cast<LoadDataFilterOptions>(static_cast<int>(LoadDataFilterOptions::All) & ~static_cast<int>(LoadDataFilterOptions::ConditionalFormatting)));
        }
    }
};

// Add main function to serve as entry point
int main() {
    Aspose::Cells::Startup();
    Aspose::Cells::Cleanup();
    return 0;

}

Bu, özel filtrenin çalışma sayfası adlarına göre nasıl kullanılacağının örneğidir.

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

class CustomLoadFilter : public LoadFilter
{
public:
    CustomLoadFilter() : LoadFilter(LoadDataFilterOptions::All) {}
};

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

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

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

    // Filter worksheets using CustomLoadFilter class
    LoadOptions loadOpts;
    CustomLoadFilter customLoadFilter;
    loadOpts.SetLoadFilter(&customLoadFilter);

    // Load the workbook with filter defined in CustomLoadFilter class
    Workbook workbook(srcDir + u"sampleCustomFilteringPerWorksheet.xlsx", loadOpts);

    // Take the image of all worksheets one by one
    WorksheetCollection sheets = workbook.GetWorksheets();
    for (int i = 0; i < sheets.GetCount(); i++)
    {
        // Access worksheet at index i
        Worksheet worksheet = sheets.Get(i);

        // Create an instance of ImageOrPrintOptions
        // Render entire worksheet to image
        ImageOrPrintOptions imageOpts;
        imageOpts.SetOnePagePerSheet(true);
        imageOpts.SetImageType(Aspose::Cells::Drawing::ImageType::Png);

        // Convert worksheet to image
        SheetRender render(worksheet, imageOpts);
        render.ToImage(0, outDir + u"outputCustomFilteringPerWorksheet_" + worksheet.GetName() + u".png");
    }

    Aspose::Cells::Cleanup();
    return 0;
}