Filtrera objekt vid inläsning av arbetsbok eller kalkylblad med Node.js via C++

Möjliga användningsscenario

Vänligen använd egenskapen LoadOptions.getLoadFilter() vid filtrering av data från arbetsboken. Men om du vill filtrera data från enskilda kalkylblad, måste du åsidosätta LoadFilter.startSheet(Worksheet) metoden. Vänligen ange ett lämpligt värde från LoadDataFilterOptions när du skapar eller arbetar med LoadFilter.

LoadDataFilterOptions har följande möjliga värden.

  • Alla
  • Bokinställningar
  • CellTom
  • CellBool
  • CellData
  • CellFel
  • CellNumeriskt
  • CellSträng
  • CellVärde
  • Chart
  • VillkorligFormatering
  • DataValidering
  • DefinieradeNamn
  • Dokumentegenskaper
  • Formel
  • Hyperlänkar
  • SammanslagnaOmråde
  • PivotTabell
  • Inställningar
  • Form
  • ArkData
  • Arkinställningar
  • Struktur
  • Stil
  • Tabell
  • VBA
  • XmlKarta

Filtrera objekt när du laddar arbetsbok

Följande exempelkod illustrerar hur du filtrerar diagram från arbetsboken. Kontrollera den exempel-Excel-filen 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.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");

// Filter charts from the workbook.
const lOptions = new AsposeCells.LoadOptions();
lOptions.setLoadFilter(new AsposeCells.LoadFilter(AsposeCells.LoadDataFilterOptions.All & ~AsposeCells.LoadDataFilterOptions.Chart));

// Load the workbook with above filter.
const workbook = new AsposeCells.Workbook(path.join(dataDir, "sampleFilterCharts.xlsx"), lOptions);

// Save worksheet to a single PDF page.
const pOptions = new AsposeCells.PdfSaveOptions();
pOptions.setOnePagePerSheet(true);

// Save the workbook in PDF format.
workbook.save(path.join(dataDir, "sampleFilterCharts.pdf"), pOptions);

Filtrera objekt när du laddar kalkylblad

Följande exempelkod laddar den ursprungliga excel-filen och filtrerar följande data från dess kalkylblad med en anpassad 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 ursprungliga excel-filen med en anpassad filter tar den bilderna av alla kalkylblad en efter en. Här är utdata bilderna för din 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.

const AsposeCells = require("aspose.cells.node");

class CustomLoadFilter extends AsposeCells.LoadFilter {
startSheet(sheet) {
if (sheet.getName() === "NoCharts") {
// Load everything and filter charts
this.loadDataFilterOptions = AsposeCells.LoadDataFilterOptions.All & ~AsposeCells.LoadDataFilterOptions.Chart;
}

if (sheet.getName() === "NoShapes") {
// Load everything and filter shapes
this.loadDataFilterOptions = AsposeCells.LoadDataFilterOptions.All & ~AsposeCells.LoadDataFilterOptions.Drawing;
}

if (sheet.getName() === "NoConditionalFormatting") {
// Load everything and filter conditional formatting
this.loadDataFilterOptions = AsposeCells.LoadDataFilterOptions.All & ~AsposeCells.LoadDataFilterOptions.ConditionalFormatting;
}
}
}

Så här använder du klassen CustomLoadFilter enligt kalkylbladsnamn.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

async function run() {
// Source directory
const sourceDir = path.join(__dirname, "data");

// Output directory
const outputDir = path.join(__dirname, "output");

// Filter worksheets using CustomLoadFilter class
const loadOpts = new AsposeCells.LoadOptions();
loadOpts.setLoadFilter(new CustomLoadFilter());

// Load the workbook with filter defined in CustomLoadFilter class
const workbook = new AsposeCells.Workbook(path.join(sourceDir, "sampleCustomFilteringPerWorksheet.xlsx"), loadOpts);

// Take the image of all worksheets one by one
for (let i = 0; i < workbook.getWorksheets().getCount(); i++) {
// Access worksheet at index i
const worksheet = workbook.getWorksheets().get(i);

// Create an instance of ImageOrPrintOptions
// Render entire worksheet to image
const imageOpts = new AsposeCells.ImageOrPrintOptions();
imageOpts.setOnePagePerSheet(true);
imageOpts.setImageType(AsposeCells.ImageType.Png);

// Convert worksheet to image
const render = new AsposeCells.SheetRender(worksheet, imageOpts);
render.toImage(0, path.join(outputDir, `outputCustomFilteringPerWorksheet_${worksheet.getName()}.png`));
}
}

run();