Фильтрование объектов при загрузке книги Excel или листа
Возможные сценарии использования
Пожалуйста, используйте свойство LoadOptions.LoadFilter при фильтрации данных из рабочей книги. Но если вы хотите фильтровать данные из отдельных листов, то вам придется переопределить метод LoadFilter.startSheet. Пожалуйста, укажите соответствующее значение из перечисления LoadDataFilterOptions при создании или работе с LoadFilter.
Перечисление LoadDataFilterOptions содержит следующие значения.
- НЕТ
- ВСЕ
- ПУСТАЯ_ЯЧЕЙКА
- СТРОКА_ЯЧЕЙКИ
- ЧИСЛОВАЯ_ЯЧЕЙКА
- ОШИБКА_ЯЧЕЙКИ
- ЛОГИЧЕСКАЯ_ЯЧЕЙКА
- ЗНАЧЕНИЕ_ЯЧЕЙКИ
- ФОРМУЛА
- ДАННЫЕ_ЯЧЕЙКИ
- ДИАГРАММА
- ФИГУРА
- ОБЪЕДИНЕННАЯ_ОБЛАСТЬ
- УСЛОВНОЕ_ФОРМАТИРОВАНИЕ
- ПРОВЕРКА_ДАННЫХ
- СВОДНАЯ_ТАБЛИЦА
- ТАБЛИЦА
- ГИПЕРССЫЛКИ
- НАСТРОЙКИ_ЛИСТА
- ДАННЫЕ_ЛИСТА
- НАСТРОЙКИ_КНИГИ
- НАСТРОЙКИ
- XML_СВЯЗЬ
- СТРУКТУРА
- СВОЙСТВА_ДОКУМЕНТА
- ОПРЕДЕЛЕННЫЕ_ИМЕНА
- VBA
- СТИЛЬ
Объекты фильтрации при загрузке книги
Приведенный ниже образец кода демонстрирует, как фильтровать диаграммы из книги. Пожалуйста, проверьте образец электронной таблицы, использованный в этом коде, и выходной файл 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"); | |
} | |
} | |
} |