Drei Methoden zum Filtern von Diagrammdaten mit Node.js über C++
1. Herausfiltern von Reihen, um ein Diagramm zu rendern
Schritte zum Filtern von Reihen aus einem Diagramm in Excel
In Excel können wir bestimmte Serien aus einem Diagramm herausfiltern, sodass diese gefilterten Serien im Diagramm nicht angezeigt werden. Das Originaldiagramm ist in Abbildung 1 dargestellt. Wenn wir jedoch Testseries2 und Testseries4 herausfiltern, erscheint das Diagramm wie in Abbildung 2.
In Aspose.Cells for Node.js via C++ können wir eine ähnliche Operation durchführen. Für eine Beispiel, wenn wir Testseries2 und Testseries4 herausfiltern möchten, können wir den folgenden Code ausführen. Zusätzlich verwalten wir zwei Listen: eine (Chart.getNSeries()) Liste, die alle ausgewählten Serien speichert.
Beispielcode
Der folgende Beispielcode lädt die Beispieldatei Excel.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "seriesFiltered.xlsx");
// Create an instance of existing Workbook
let workbook = new AsposeCells.Workbook(filePath);
// Get filtered series list
let nSeriesFiltered = workbook.getWorksheets().get(0).getCharts().get("Chart 1").getFilteredNSeries();
// Get selected series list
let nSeries = workbook.getWorksheets().get(0).getCharts().get("Chart 1").getNSeries();
// Should be 0
console.log("Filtered Series count: " + nSeriesFiltered.getCount());
// Should be 6
console.log("Visible Series count: " + nSeries.getCount());
// Process from the end to the beginning
nSeries.get(1).setIsFiltered(true);
nSeries.get(0).setIsFiltered(true);
// Should be 2
console.log("Filtered Series count: " + nSeriesFiltered.getCount());
// Should be 4
console.log("Visible Series count: " + nSeries.getCount());
workbook.save("seriesFiltered-out.xlsx");
workbook = new AsposeCells.Workbook("seriesFiltered-out.xlsx");
// Should be 2
console.log("Filtered Series count: " + nSeriesFiltered.getCount());
// Should be 4
console.log("Visible Series count: " + nSeries.getCount());
2. Filtern Sie die Daten und lassen Sie das Diagramm sich ändern
Das Filtern Ihrer Daten ist eine großartige Möglichkeit, mit Diagrammfiltern bei großen Datenmengen umzugehen. Wenn Sie die Daten filtern, ändert sich das Diagramm. Ein Problem, das wir lösen müssen, ist sicherzustellen, dass das Diagramm auf dem Bildschirm bleibt. Beim Filtern werden versteckte Zeilen angezeigt, und manchmal befindet sich das Diagramm in diesen versteckten Zeilen.
Schritte zum Verwenden von Datenfiltern zum Ändern des Diagramms in Excel
- Klicken Sie innerhalb Ihres Datenbereichs.
- Klicken Sie auf die Registerkarte Daten und aktivieren Sie Filter, indem Sie auf Filter klicken. Ihre Kopfzeile wird Dropdown-Pfeile haben.
- Erstellen Sie ein Diagramm, indem Sie zum Einfügen-Tab gehen und ein Säulendiagramm auswählen.
- Filtern Sie nun Ihre Daten mithilfe der Dropdown-Pfeile in den Daten. Verwenden Sie nicht die Diagrammfilter.
Beispielcode
Der folgende Beispielcode zeigt die gleiche Funktion mit Aspose.Cells.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "sample.xlsx");
// Loads the workbook which contains hidden external links
const workbook = new AsposeCells.Workbook(filePath);
// Create an instance of Worksheet
const sheet = workbook.getWorksheets().get("Sheet1");
// Add data into details cells.
sheet.getCells().get(0, 0).putValue("Fruits Name");
sheet.getCells().get(0, 1).putValue("Fruits Price");
sheet.getCells().get(1, 0).putValue("Apples");
sheet.getCells().get(2, 0).putValue("Bananas");
sheet.getCells().get(3, 0).putValue("Grapes");
sheet.getCells().get(4, 0).putValue("Oranges");
sheet.getCells().get(1, 1).putValue(5);
sheet.getCells().get(2, 1).putValue(2);
sheet.getCells().get(3, 1).putValue(1);
sheet.getCells().get(4, 1).putValue(4);
// Add a chart to the worksheet
const chartIndex = sheet.getCharts().add(AsposeCells.ChartType.Column, 7, 7, 15, 15);
// Access the instance of the newly added chart
const chart = sheet.getCharts().get(chartIndex);
// Set data range
chart.setChartDataRange("A1:B5", true);
// Set AutoFilter range
sheet.getAutoFilter().setRange("A1:B5");
// Add filters for a filter column.
sheet.getAutoFilter().addFilter(0, "Bananas");
sheet.getAutoFilter().addFilter(0, "Oranges");
// Apply the filters
sheet.getAutoFilter().refresh();
chart.toImage("Autofilter.png");
workbook.save("Autofilter.xlsx");
3. Filtern Sie die Daten mithilfe einer Tabelle und lassen Sie das Diagramm sich ändern.
Die Verwendung einer Tabelle ist ähnlich wie Methode 2, die Verwendung eines Bereichs, aber Sie haben mit Tabellen Vorteile gegenüber Bereichen. Wenn Sie Ihren Bereich in eine Tabelle ändern und Daten hinzufügen, wird das Diagramm automatisch aktualisiert. Mit einem Bereich müssten Sie die Datenquelle ändern.
Als Tabelle formatieren in Excel
Klicken Sie in Ihre Daten und verwenden Sie STRG + T oder gehen Sie zum Register Start, Als Tabelle formatieren
Beispielcode
Der folgende Beispielcode lädt die Beispiel Excel-Datei und zeigt die gleiche Funktion mit Aspose.Cells.
const path = require("path");
const AsposeCells = require("aspose.cells.node");
// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "TableFilters.xlsx");
// Create a workbook.
const workbook = new AsposeCells.Workbook(filePath);
// Access first worksheet
const sheet = workbook.getWorksheets().get(0);
// Access the instance of the newly added chart
const chartIndex = sheet.getCharts().add(AsposeCells.ChartType.Column, 7, 7, 15, 15);
const chart = sheet.getCharts().get(chartIndex);
// Set data range
chart.setChartDataRange("A1:B7", true);
// Convert the chart to image
chart.toImage("TableFilters.before.png");
// Add a new List Object to the worksheet
const listObject = sheet.getListObjects().get(sheet.getListObjects().add("A1", "B7", true));
// Add default style to the table
listObject.setTableStyleType(AsposeCells.TableStyleType.TableStyleMedium10);
// Show Total
listObject.setShowTotals(false);
// Add filters for a filter column.
listObject.getAutoFilter().addFilter(0, "James");
// Apply the filters
listObject.getAutoFilter().refresh();
// After adding new value the chart will change
listObject.putCellValue(7, 0, "Me");
listObject.putCellValue(7, 1, 1000);
// Check the changed images
chart.toImage("TableFilters.after.png");
// Saving the Excel file
workbook.save("TableFilter.out.xlsx");