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

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

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

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

  • Все
  • Настройки книги
  • Пустая ячейка
  • Булева ячейка
  • Данные ячейки
  • Ошибка ячейки
  • Числовая ячейка
  • Строковая ячейка
  • Значение ячейки
  • Chart
  • Условное форматирование
  • Проверка данных
  • Определенные имена
  • Свойства документа
  • Формула
  • Гиперссылки
  • ОбъединеннаяОбласть
  • СводнаяТаблица
  • Настройки
  • Фигура
  • ДанныеЛиста
  • НастройкиЛиста
  • Структура
  • Стиль
  • Таблица
  • VBA
  • XmlMap

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

Приведенный ниже образец кода демонстрирует, как фильтровать диаграммы из книги Excel. Пожалуйста, проверьте образец excel файла, использованный в этом коде, и выходной PDF, сгенерированный им. Как видно из выходного PDF, все диаграммы были отфильтрованы из книги Excel.

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