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

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

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

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

Объекты фильтрации при загрузке книги

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

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(FilterObjectsLoadingWorkbook.class) + "articles/";
//Filter charts from entire workbook
LoadOptions ldOpts = new LoadOptions();
ldOpts.setLoadFilter(new LoadFilter(LoadDataFilterOptions.ALL & ~LoadDataFilterOptions.CHART));
//Load the workbook with above filter
Workbook wb = new Workbook(dataDir + "sampleFilterCharts.xlsx", ldOpts);
//Save entire worksheet into a single page
PdfSaveOptions opts = new PdfSaveOptions();
opts.setOnePagePerSheet(true);
//Save the workbook in pdf format with the above pdf save options
wb.save(dataDir + "sampleFilterCharts.pdf", opts);

Объекты фильтрации при загрузке листа

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

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

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

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
public class FilterObjectsLoadingWorksheets {
// Implement your own custom load filter, it will enable you to filter your
// individual worksheet
class CustomLoadFilter extends LoadFilter {
public void startSheet(Worksheet sheet) {
if (sheet.getName().equals("NoCharts")) {
// Load everything and filter charts
this.setLoadDataFilterOptions(LoadDataFilterOptions.ALL& ~LoadDataFilterOptions.CHART);
}
if (sheet.getName().equals("NoShapes")) {
// Load everything and filter shapes
this.setLoadDataFilterOptions(LoadDataFilterOptions.ALL& ~LoadDataFilterOptions.DRAWING);
}
if (sheet.getName().equals("NoConditionalFormatting")) {
// Load everything and filter conditional formatting
this.setLoadDataFilterOptions(LoadDataFilterOptions.ALL& ~LoadDataFilterOptions.CONDITIONAL_FORMATTING);
}
}// End StartSheet method.
}// End CustomLoadFilter class.
public static void main(String[] args) throws Exception {
FilterObjectsLoadingWorksheets pg = new FilterObjectsLoadingWorksheets();
pg.Run();
}
public void Run() throws Exception {
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(FilterObjectsLoadingWorksheets.class) + "TechnicalArticles/";
// Filter worksheets using custom load filter
LoadOptions ldOpts = new LoadOptions();
ldOpts.setLoadFilter(new CustomLoadFilter());
// Load the workbook with above filter
Workbook wb = new Workbook(dataDir + "sampleFilterDifferentObjects.xlsx", ldOpts);
// Take the image of all worksheets one by one
for (int i = 0; i < wb.getWorksheets().getCount(); i++) {
// Access worksheet at index i
Worksheet ws = wb.getWorksheets().get(i);
// Create image or print options, we want the image of entire
// worksheet
ImageOrPrintOptions opts = new ImageOrPrintOptions();
opts.setOnePagePerSheet(true);
opts.setImageType(ImageType.PNG);
// Convert worksheet into image
SheetRender sr = new SheetRender(ws, opts);
sr.toImage(0, dataDir + ws.getName() + ".png");
}
}
}