Фильтровать объекты при загрузке книги или листа

Возможные сценарии использования

Пожалуйста, используйтеLoadOptions.LoadFilterсвойство при фильтрации данных из книги. Но если вы хотите отфильтровать данные с отдельных рабочих листов, вам придется переопределитьLoadFilter.StartSheetметод. Укажите соответствующее значение изLoadDataFilterOptionsперечисление при создании или работе сЗагрузить фильтр.

LoadDataFilterOptionsперечисление имеет следующие возможные значения.

  • Все
  • Настройки книги
  • Пустая ячейка
  • CellBool
  • CellData
  • CellError
  • ЯчейкаЧисловой
  • CellString
  • CellValue
  • Диаграмма
  • Условное форматирование
  • Валидация данных
  • Дефайнеднамес
  • Свойства документа
  • Формула
  • Гиперссылки
  • Объединенная область
  • сводная таблица
  • Настройки
  • Форма
  • Данные листа
  • Параметры листа
  • Структура
  • Стиль
  • Таблица
  • 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);

Фильтровать объекты при загрузке рабочего листа

Следующий пример кода загружаетисходный файл excel и фильтрует следующие данные из своих рабочих листов, используя настраиваемый фильтр.

  • Он фильтрует диаграммы из рабочего листа с именем NoCharts.
  • Он фильтрует фигуры из рабочего листа с именем NoShapes.
  • Он фильтрует условное форматирование из листа с именем NoConditionalFormatting.

Один раз он загружаетисходный файл excel с пользовательским фильтром он берет изображения всех рабочих листов одно за другим. Вот выходные изображения для справки. Как видите, на первом изображении нет диаграмм, на втором изображении нет фигур, а на третьем изображении нет условного форматирования.

// 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");
}
}