C++経由のNode.jsを用いたスライサー更新

可能な使用シナリオ

スライサーの更新とは、スライサーが接続されているピボットテーブルまたはテーブルのデータをフィルター処理することを意味します。Microsoft Excelでスライサーのアイテムを選択または選択解除すると、リンクされたピボットテーブルまたはテーブルがそれに応じて再計算されます。Aspose.Cells for Node.js via C++では、スライサーキャッシュアイテムを反復処理してスライサーを手動でリフレッシュする必要はありません。Slicer.selectItems(labels, append)メソッドがスライサーを更新し、フィルターアイテムから直接、リンクされたピボットテーブルまたはテーブルを再計算します:

  • Slicer.selectItems(labels, append) — 指定されたラベルを選択し、リンクされたピボットテーブルまたはテーブルを再計算します。appendがtrueの場合は元々選択されていたラベルが保持され、指定されたラベルが選択に追加されます。appendがfalseの場合は元の選択がすべてクリアされ、指定されたラベルのみが選択された状態になります。
  • Slicer.unselectItems(labels) — 現在選択されているアイテムの一部を選択解除します。
  • Slicer.clearFilter() — フィルターを解除してすべてのアイテムを選択します。

スライサーの更新方法

次のサンプルコードは、ピボットテーブルに接続された既存のスライサーを含むサンプルExcelファイルを読み込みます。Slicer.selectItems(labels, false)を使用してスライサーの"Blue"と"Pink"のアイテムのみを選択すると、ピボットテーブルはフィルターアイテムから直接再計算され、手動でのSlicer.refresh()の呼び出しは不要です。その後、ワークブックを出力Excelファイルとして保存します。次のスクリーンショットは、サンプルコードがサンプルExcelファイルに与える影響を示しています。スクリーンショットでわかるように、ピボットテーブルにはフィルターされたアイテムのみが表示されます。 todo:image_alt_text

サンプルコード

現在の選択を置き換え(指定されたラベルのみが選択された状態になります)、リンクされたピボットテーブルまたはテーブルを再計算します:

const AsposeCells = require("aspose.cells.node");
// Load sample Excel file containing slicer.
const wb = new AsposeCells.Workbook("sampleUpdatingSlicer.xlsx");
// Access the first worksheet.
const ws = wb.getWorksheets().get(0);
// Access the first slicer inside the slicer collection.
const slicer = ws.getSlicers().get(0);
// Select only "Blue" and "Pink"; the linked pivot table or table
// is recalculated directly from the filter items.
slicer.selectItems(["Blue", "Pink"], false);
// Save the modified workbook.
wb.save("out.xlsx");

現在選択されているラベルを保持したまま、さらにアイテムを選択します:

const AsposeCells = require("aspose.cells.node");
// Load sample Excel file containing slicer.
const wb = new AsposeCells.Workbook("sampleUpdatingSlicer.xlsx");
// Access the first worksheet.
const ws = wb.getWorksheets().get(0);
// Access the first slicer inside the slicer collection.
const slicer = ws.getSlicers().get(0);
// Keep the current selection and add "Red" to it.
slicer.selectItems(["Red"], true);

選択されたアイテムの一部を選択解除します:

const AsposeCells = require("aspose.cells.node");
// Load sample Excel file containing slicer.
const wb = new AsposeCells.Workbook("sampleUpdatingSlicer.xlsx");
// Access the first worksheet.
const ws = wb.getWorksheets().get(0);
// Access the first slicer inside the slicer collection.
const slicer = ws.getSlicers().get(0);
// Remove "Pink" from the current selection.
slicer.unselectItems(["Pink"]);

フィルターを解除します(すべてのアイテムを選択します):

const AsposeCells = require("aspose.cells.node");
// Load sample Excel file containing slicer.
const wb = new AsposeCells.Workbook("sampleUpdatingSlicer.xlsx");
// Access the first worksheet.
const ws = wb.getWorksheets().get(0);
// Access the first slicer inside the slicer collection.
const slicer = ws.getSlicers().get(0);
// Clear the filter; all slicer items become selected again.
slicer.clearFilter();