Filtrera objekt när du laddar arbetsbok eller kalkylblad
Möjliga användningsscenario
Använd LoadOptions.LoadFilter egenskapen vid filtrering av data från arbetsboken. Men om du vill filtrera data från individuella arbetsblad måste du åsidosätta LoadFilter.startSheet metoden. Ange det lämpliga värdet från LoadDataFilterOptions ramverket när du skapar eller arbetar med LoadFilter.
LoadDataFilterOptions ramverket har följande värden.
- INGEN
- ALLA
- CELL_BLANK
- CELL_STRING
- CELL_NUMERIC
- CELL_ERROR
- CELL_BOOL
- CELL_VÄRDE
- FORMEL
- CELL_DATA
- DIAGRAM
- FIGUR
- SAMMANSATT_OMRÅDE
- VILLKORSBASERAD_FORMATTERING
- DATA_VALIDERING
- PIVOTTABELL
- TABELL
- HYPERLÄNKAR
- ARKINSTÄLLNINGAR
- ARKDATA
- BOKINSTÄLLNINGAR
- INSTÄLLNINGAR
- XML-MAPP
- STRUKTUR
- DOKUMENTEGENSKAPER
- DEFINIERADE_NAMN
- VBA
- STIL
Filterobjekt vid inläsning av arbetsbok
Följande exempelkod visar hur du filtrerar diagram från arbetsboken. Var god kontrollera den provexelfil som används i denna kod och den utdata PDF som genererats av den. Som du kan se i utdata PDF:en har alla diagram filtrerats bort från arbetsboken.
// 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); |
Filterobjekt vid inläsning av arbetsblad
Följande exempelkod laddar den källa exelfilen och filtrerar följande data från dess arbetsblad med hjälp av ett anpassat filter.
- Det filtrerar diagram från kalkylbladet som heter NoCharts.
- Det filtrerar former från kalkylbladet som heter NoShapes.
- Det filtrerar villkorlig formatering från kalkylbladet som heter NoConditionalFormatting.
När den laddar den källa exelfilen med ett anpassat filter, tar den bilderna av alla arbetsblad ett efter ett. Här är utdatbilderna för referens. Som du kan se har den första bilden inga diagram, den andra bilden har inga former och den tredje bilden har ingen villkorlig formatering.
// 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"); | |
} | |
} | |
} |