ワークブックまたはワークシートをロードする際にオブジェクトをフィルタリングする

可能な使用シナリオ

ワークブックからデータをフィルタリングする際は、LoadOptions.LoadFilterプロパティを使用してください。ただし、個々のワークシートからデータをフィルタリングする場合は、LoadFilter.StartSheetメソッドをオーバーライドする必要があります。LoadFilterを作成または使用する際は、LoadDataFilterOptionsの列挙型から適切な値を指定してください。

LoadDataFilterOptions列挙型には、以下の可能な値があります。

  • 全て
  • ブック設定
  • 空白セル
  • ブールセル
  • データセル
  • エラーセル
  • 数値セル
  • 文字列セル
  • 値セル
  • Chart
  • 条件付き書式
  • データの検証
  • 定義された名前
  • ドキュメントのプロパティ
  • 数式
  • ハイパーリンク
  • 結合エリア
  • ピボットテーブル
  • 設定
  • 図形
  • シートデータ
  • シート設定
  • 構造
  • スタイル
  • テーブル
  • VBA
  • XmlMap

ワークブックの読み込み中にオブジェクトをフィルタリングする

以下のサンプルコードは、ワークブックからグラフをフィルタリングする方法を示しています。このコードで使用されているサンプルエクセルファイルとその生成された出力PDFを確認してください。出力PDFでは、すべてのグラフがワークブックからフィルタリングされていることが分かります。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create directory if it is not already present.
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
System.IO.Directory.CreateDirectory(dataDir);
// Filter charts from the workbook.
LoadOptions lOptions = new LoadOptions();
lOptions.LoadFilter = new LoadFilter(LoadDataFilterOptions.All & ~LoadDataFilterOptions.Chart);
// Load the workbook with above filter.
Workbook workbook = new Workbook(dataDir + "sampleFilterCharts.xlsx", lOptions);
// Save worksheet to a single PDF page.
PdfSaveOptions pOptions = new PdfSaveOptions();
pOptions.OnePagePerSheet = true;
// Save the workbook in PDF format.
workbook.Save(dataDir + "sampleFilterCharts.pdf", pOptions);

ワークシートの読み込み中にオブジェクトをフィルタリングする

以下のサンプルコードは、ソースエクセルファイルを読み込み、カスタムフィルタを使用してそのワークシートから以下のデータをフィルタリングする方法を説明しています。

  • NoChartsという名前のワークシートからグラフをフィルタリングします。
  • NoShapesという名前のワークシートから形状をフィルタリングします。
  • NoConditionalFormattingという名前のワークシートから条件付き書式をフィルタリングします。

1つのカスタムフィルタでソースエクセルファイルを読み込むと、ワークシートを1つずつ画像化します。以下は参照用の出力画像です。最初の画像にはグラフがなく、2番目の画像には形状がなく、3番目の画像には条件付き書式がないことが分かります。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
public class CustomLoadFilter : LoadFilter
{
public override void StartSheet(Worksheet sheet)
{
if (sheet.Name == "NoCharts")
{
//Load everything and filter charts
this.LoadDataFilterOptions = LoadDataFilterOptions.All & ~LoadDataFilterOptions.Chart;
}
if (sheet.Name == "NoShapes")
{
//Load everything and filter shapes
this.LoadDataFilterOptions = LoadDataFilterOptions.All & ~LoadDataFilterOptions.Drawing;
}
if (sheet.Name == "NoConditionalFormatting)")
{
//Load everything and filter conditional formatting
this.LoadDataFilterOptions = LoadDataFilterOptions.All & ~LoadDataFilterOptions.ConditionalFormatting;
}
}
}

ワークシート名に従ってCustomLoadFilterクラスを使用する方法

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
public static void Run()
{
//Source directory
string sourceDir = RunExamples.Get_SourceDirectory();
//Output directory
string outputDir = RunExamples.Get_OutputDirectory();
// Filter worksheets using CustomLoadFilter class
LoadOptions loadOpts = new LoadOptions();
loadOpts.LoadFilter = new CustomLoadFilter();
// Load the workbook with filter defined in CustomLoadFilter class
Workbook workbook = new Workbook(sourceDir + "sampleCustomFilteringPerWorksheet.xlsx", loadOpts);
// Take the image of all worksheets one by one
for (int i = 0; i < workbook.Worksheets.Count; i++)
{
// Access worksheet at index i
Worksheet worksheet = workbook.Worksheets[i];
// Create an instance of ImageOrPrintOptions
// Render entire worksheet to image
ImageOrPrintOptions imageOpts = new ImageOrPrintOptions();
imageOpts.OnePagePerSheet = true;
imageOpts.ImageType = Drawing.ImageType.Png;
// Convert worksheet to image
SheetRender render = new SheetRender(worksheet, imageOpts);
render.ToImage(0, outputDir + "outputCustomFilteringPerWorksheet_" + worksheet.Name + ".png");
}
}