Filtrer les objets lors du chargement du classeur ou de la feuille de calcul avec Node.js via C++

Scénarios d’utilisation possibles

Veuillez utiliser la propriété LoadOptions.getLoadFilter() lors du filtrage des données provenant du classeur. Mais si vous souhaitez filtrer des données provenant de feuilles de calcul individuelles, vous devrez redéfinir la méthode LoadFilter.startSheet(Worksheet). Veuillez fournir une valeur appropriée à partir de l’énumération LoadDataFilterOptions lors de la création ou de l’utilisation de LoadFilter.

L’énumération LoadDataFilterOptions possède les valeurs possibles suivantes.

  • Tous
  • Paramètres du classeur
  • Cellule vide
  • Cellule booléenne
  • Données de la cellule
  • Erreur de la cellule
  • Numérique de la cellule
  • Chaîne de la cellule
  • Valeur de la cellule
  • Chart
  • Formatage conditionnel
  • Validation des données
  • Noms définis
  • Propriétés du document
  • Formule
  • Liens hypertexte
  • Zone de fusion
  • Tableau croisé dynamique
  • Paramètres
  • Forme
  • Données de feuille
  • Paramètres de feuille
  • Structure
  • Style
  • Tableau
  • VBA
  • XmlMap

Filtrer les objets lors du chargement du classeur

Le code d’exemple suivant illustre comment filtrer les graphiques du classeur. Veuillez vérifier le fichier Excel exemple utilisé dans ce code et le PDF de sortie généré par celui-ci. Comme vous pouvez le voir dans le PDF de sortie, tous les graphiques ont été filtrés du classeur.

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);

Filtrer les objets lors du chargement de la feuille de calcul

Le code d’exemple suivant charge le fichier Excel source et filtre les données suivantes de ses feuilles de calcul en utilisant un filtre personnalisé.

  • Il filtre les graphiques de la feuille de calcul nommée NoCharts.
  • Il filtre les formes de la feuille de calcul nommée NoShapes.
  • Il filtre la mise en forme conditionnelle de la feuille de calcul nommée NoConditionalFormatting.

Une fois, il charge le fichier Excel source avec un filtre personnalisé, il prend les images de toutes les feuilles de calcul une par une. Voici les images de sortie pour votre référence. Comme vous pouvez le voir, la première image n’a pas de graphiques, la deuxième image n’a pas de formes et la troisième image n’a pas de mise en forme conditionnelle.

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;
}
}
}

Voici comment utiliser la classe CustomLoadFilter en fonction des noms des feuilles de calcul.

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();