Фильтровать объекты при загрузке книги или листа
Возможные сценарии использования
Пожалуйста, используйте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"); | |
} | |
} |