mcpField
S
syncfusion-react-pivot-table

syncfusion-react-pivot-table

github.com/syncfusionデータ・データベース3717 回インストール1 週間前に更新
リポジトリ

syncfusion-react-pivot-table について

Syncfusion PivotView でインタラクティブなピボットテーブルを実装する React 開発者向けガイドです。分析、設定、エクスポートに加え、データソースの安全性や参照ファイルでの API 確認方法を扱います。

主な機能

  1. 01インタラクティブなピボットテーブル
  2. 02グループ化、フィルタリング、集計
  3. 03ドリルダウンとレポート出力
  4. 04書式設定と状態の永続化
  5. 05大規模データ向けの性能最適化

活用シーン

  1. 01動的な分析レポートの構築
  2. 02階層グループ化とフィルターの設定
  3. 03Excel または PDF へのレポート出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/syncfusion/react-ui-components-skills --skill syncfusion-react-pivot-table

インストール後、Claude Code で/syncfusion-react-pivot-tableを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
aggregation.md
calculated-field.md
classic-layout.md
connecting-to-data-source.md
connecting-to-databases.md
data-binding.md
data-formatting.md
data-shaping.md
defer-update.md
drill-down.md
drill-through.md
drill.md
editing.md
excel-export.md
export.md
field-list.md
filtering-and-sorting.md
getting-started.md
grid-customization.md
grouping-bar.md
grouping.md
hyperlink.md
label-filtering.md
member-filtering.md
nextjs-integration.md
pdf-export.md
performance.md
pivot-chart.md
print.md
row-and-column.md

詳細

React での PivotView の実装

Syncfusion React PivotView コンポーネントは、強力なデータ分析およびレポート機能を提供します。グループ化、フィルタリング、集計、ドリルダウン分析、エクスポート機能などを備えたインタラクティブなピボットテーブルを使用して、多次元データを整理、分析、要約できます。

⚠️ 重要: API のクラス名、プロパティ、メソッドシグネチャは、必ずこのスキルのリファレンスファイル(references/*.md)で確認してください。これらのファイルには、検証済みで動作する例が記載されています。他の情報源の API 詳細をそのまま信用しないでください。

⚠️ セキュリティ警告:データソースの検証

重大なセキュリティ通知: ピボットテーブルを実装する際は、必ず信頼できるデータソースを使用してください。適切な検証とサニタイズを行わずに、信頼できない URL やユーザーが指定した URL からデータを取得したり、データをバインドしたりしないでください。

セキュリティのベストプラクティス:
  1. ローカルデータを使用する:セキュリティを最大限に高めるため、ローカルのメモリ内データソースを優先します
  2. リモートソースを検証する:管理下にある、認証済みかつ認可済みの API エンドポイントにのみ接続します
  3. ユーザー入力をサニタイズする:ユーザーが任意の URL やデータソースを指定できないようにします
  4. 認証を実装する:必ず認証ヘッダーと安全な API エンドポイントを使用します
  5. コンテンツを検証する:外部ソースから受信したすべてのデータを、バインドする前に検証してサニタイズします
  6. HTTPS を使用する:リモートデータ接続には必ず HTTPS を使用します
  7. レート制限を設定する:不正利用を防ぐため、API エンドポイントにレート制限を実装します
セキュリティリスク:
  • 間接的なプロンプトインジェクション:信頼できないサードパーティのデータには、AI エージェントの動作を操作する悪意のあるコンテンツが含まれている可能性があります
  • データの流出:悪意のあるデータソースが、機密情報の抽出を試みる可能性があります
  • コードインジェクション:信頼できないデータには、スクリプトや有害なコンテンツが含まれている可能性があります
推奨される方法:

✅ 実施すること:管理下にある、認証済みのバックエンド API を使用します ✅ 実施すること:サーバー側のデータ検証を実装します ✅ 実施すること:API エンドポイントには環境変数を使用します ✅ 実施すること:許可するデータソースをホワイトリストに登録します

❌ 避けること:ユーザーが指定した URL を受け入れる ❌ 避けること:公開されている信頼できないエンドポイントにバインドする ❌ 避けること:データの検証とサニタイズを省略する ❌ 避けること:機密データに HTTP を使用する

このスキルを使用する場面

次のことが必要な場合に、このスキルを使用します:

  • データ分析用のインタラクティブなピボットテーブルを作成する
  • データの集計と要約を設定する
  • 動的なレポートダッシュボードを構築する
  • 階層を使用して行/列のグループ化を設定する
  • データのフィルタリングと並べ替えを実装する
  • ドリルダウン/ドリルスルー機能を追加する
  • レポートを Excel または PDF にエクスポートする
  • 大規模なデータセットのパフォーマンスを最適化する
  • ピボットテーブルの表示スタイルと書式を設定する
  • セッションをまたいでピボットテーブルの状態を保持する

ナビゲーションガイド

セットアップ

📄 参照: references/getting-started.md

  • インストール、パッケージのセットアップ、基本的なコンポーネントの作成、CSS のインポート、NextJS との統合

📄 参照(任意): references/nextjs-integration.md

  • Next.js App Router と Pages Router のセットアップ、動的インポート、SSR に関する考慮事項、API ルート、デプロイ
データ管理

📄 参照: references/data-binding.md

  • JSON データバインディング、CSV データバインディング、リモートデータバインディング、フィールドマッピング、DataManager のセットアップ

📄 参照: references/connecting-to-databases.md

  • データベース接続、Web API のセットアップ、SQL Server、MySQL、PostgreSQL、MongoDB、Oracle、Elasticsearch、Snowflake

📄 参照: references/connecting-to-data-source.md

  • OLAP 接続、サーバーサイドエンジンの設定、リアルタイムのデータ更新
可視化と操作

📄 参照: references/pivot-chart.md

  • ピボットチャートの統合、チャートの種類、可視化オプション、チャートのカスタマイズ

📄 参照: references/classic-layout.md

  • クラシックレイアウトの設定、レイアウトの切り替え、UI 制御オプション

📄 参照: references/drill.md

  • ドリルダウンとドリルスルー機能、編集、ナビゲーション制御、イベント処理
データの整理と表示

📄 参照: references/field-list.md

  • 組み込みフィールドリスト(ポップアップ)、独立したフィールドリスト(固定)、フィールドリストのモード、UI 操作、設定オプション

📄 参照: references/grouping-bar.md

  • グループ化バーの設定、ドラッグ&ドロップ操作、フィルター/並べ替え/削除アイコン、フィールドパネル、値の種類アイコン、除外オプション

📄 参照: references/data-shaping.md

  • 集計関数、計算フィールド(定義と編集)、集計のカスタマイズオプション

📄 参照: references/aggregation.md

  • 24 種類以上の集計タイプ(合計、平均、件数など)、高度な集計、基準フィールドの設定、実行時の変更

📄 参照: references/calculated-field.md

  • 対話型の計算フィールドダイアログ、数式の構文と演算子、コードベースのメソッド、書式設定

📄 参照: references/grouping.md

  • データのグループ化機能、範囲を指定した数値のグループ化、階層を使った日付のグループ化、プログラムによる設定、グループ化の解除

📄 参照: references/data-formatting.md

  • 数値の書式設定、条件付き書式設定、セルのスタイル設定、ツールチップのカスタマイズ

📄 参照: references/grid-customization.md

  • セルテンプレート、行の高さ、列幅、テキストの配置、列のサイズ変更と並べ替え、ディメンションの設定

📄 参照: references/row-and-column.md

  • セルテンプレートのカスタマイズ、ディメンションの設定、行の高さ、列幅、サイズ変更、並べ替え、テキストの配置

📄 参照: references/filtering-and-sorting.md

  • メンバーのフィルタリング、ラベルのフィルタリング、値のフィルタリング、並べ替え操作、フィルターのカスタマイズ

📄 必要に応じて個別に参照してください:

  • references/member-filtering.md - 特定のメンバーの選択/除外、対話型フィルターダイアログ、現在の選択内容を既存のフィルターに追加
  • references/label-filtering.md - テキストパターン、日付範囲、数値範囲によるフィルタリング
  • references/value-filtering.md - 集計値によるフィルタリング、上位/下位 N 件のメンバー(クライアント側)、値フィルターの解除
  • references/value-sorting.md - メジャー値による並べ替え、ランキング分析、多段階の並べ替え

📄 参照: references/show-hide-totals.md

  • 総計の表示、グループ合計の設定、小計の計算オプション

📄 参照: references/state-persistence.md

  • ピボットテーブルの状態の保存と読み込み、永続化の設定、状態管理のパターン

📄 参照: references/toolbar.md

  • ツールバーのコントロール、ボタンのカスタマイズ、ツールバーのイベントとアクション

📄 参照: references/tooltip.md

  • ツールチップの設定、カスタムツールチップテンプレート、ツールチップの書式設定

📄 参照: references/hyperlink.md

  • ハイパーリンクの設定、セルのリンク、ナビゲーションの設定、リンクのカスタマイズ
ナビゲーションと分析

📄 参照: references/drill.md

  • ドリルダウンとドリルスルー機能、階層データの探索、編集機能

📄 必要に応じて個別に参照:

エクスポートと出力

📄 参照: references/export.md

  • Excel エクスポート、PDF エクスポート、エクスポート設定、カスタムエクスポートハンドラー

📄 必要に応じて個別に参照:

📄 参照: references/print.md

  • ピボットテーブルの印刷、チャートの印刷、印刷設定、ブラウザーの互換性
高度な機能とパフォーマンス

📄 参照: references/defer-update.md

  • レイアウト更新の遅延、適用ボタン、フィールドの一括操作、大規模データセットのパフォーマンス最適化

📄 参照: references/performance.md

  • 仮想スクロール、ページング設定、パフォーマンスのベストプラクティス、データ圧縮

📄 必要に応じて個別に参照:

クイックスタート

Tailwind 3 テーマパッケージをインストールします。このテーマパッケージ内の各コンポーネントには、必要なすべての依存スタイルを自動的に読み込む index.css ファイルが含まれています。

npm install @syncfusion/ej2-tailwind3-theme --save

デフォルトでは、Vite プロジェクトにはデフォルトスタイルを含む index.css ファイルがあります。これらのデフォルトスタイルは、Syncfusion コンポーネントのスタイルと競合する可能性があります。スタイルの競合を防ぐには、index.css ファイルの内容をすべて削除してください。

Pivot Table コンポーネントに必要なスタイルは、src/App.css ファイルでインポートします。

/* App.css */
@import '../node_modules/@syncfusion/ej2-tailwind3-theme/styles/pivotview/index.css';
import { PivotViewComponent, Inject, GroupingBar, FieldList, IDataSet } from '@syncfusion/ej2-react-pivotview';
import './App.css';

const pivotData: IDataSet[] = [
  { Country: 'USA', Product: 'Laptops', Sales: 5000, Year: 2020 },
  { Country: 'USA', Product: 'Mobiles', Sales: 3000, Year: 2020 },
  { Country: 'Canada', Product: 'Laptops', Sales: 2500, Year: 2020 },
  { Country: 'Canada', Product: 'Mobiles', Sales: 1500, Year: 2020 }
];

function cellTemplate(props: any): JSX.Element {
  return (
    <span style={{ fontWeight: 'bold', color: '#333' }}>
      {props.cellInfo?.value}
    </span>
  );
}

function App() {
  const dataSourceSettings: DataSourceSettingsModel = {
    dataSource: pivotData as IDataSet[],
    rows: [{ name: 'Country' }],
    columns: [{ name: 'Product' }],
    values: [{ name: 'Sales', caption: 'Total Sales' }],
    showGrandTotals: true
  };

  return (
    <PivotViewComponent
      id="pivotview"
      dataSourceSettings={dataSourceSettings}
      cellTemplate={cellTemplate}
      showGroupingBar={true}
      showFieldList={true}
      height={350}
    >
      <Inject services={[GroupingBar, FieldList]} />
    </PivotViewComponent>
  );
}

export default App;

一般的なパターン

パターン 1:行フィールドと列フィールドを使用した基本的なピボットテーブル
const dataSourceSettings: DataSourceSettingsModel = {
  dataSource: data as IDataSet[],
  rows: [{ name: 'Country' }, { name: 'Region' }],
  columns: [{ name: 'Year' }, { name: 'Quarter' }],
  values: [{ name: 'Sales', caption: 'Total Sales' }]
};
パターン 2:フィルターと集計の追加
const dataSourceSettings: DataSourceSettingsModel = {
  dataSource: data as IDataSet[],
  rows: [{ name: 'Country' }],
  columns: [{ name: 'Product' }],
  values: [
    { name: 'Sales', type: 'Sum' },
    { name: 'Quantity', type: 'Avg' }
  ],
  filters: [{ name: 'Year' }]
};
パターン 3:計算フィールド
import { PivotViewComponent, Inject, CalculatedField, FieldList } from '@syncfusion/ej2-react-pivotview';
import { DataSourceSettingsModel } from '@syncfusion/ej2-pivotview/src/model/datasourcesettings-model';

const dataSourceSettings: DataSourceSettingsModel = {
  dataSource: data as IDataSet[],
  rows: [{ name: 'Country' }],
  columns: [{ name: 'Product' }],
  values: [
    { name: 'Sold', caption: 'Units Sold' },
    { name: 'Amount', caption: 'Amount' },
    { name: 'Total', caption: 'Total', type: 'CalculatedField' }  // ← Must add to values
  ],
  calculatedFieldSettings: [
    {
      name: 'Total',
      formula: '"Sum(Amount)"+"Sum(Sold)"'  // ← Formula with aggregation functions
    }
  ]
};
パターン 4:条件付き書式を使用したセルテンプレート
function cellTemplate(props: any): JSX.Element {
  const value = props.cellInfo?.value;
  const isTotal = props.cellInfo?.isGrandTotal || props.cellInfo?.isDeserialized;
  
  const getStyle = () => {
    const numValue = parseFloat(value);
    if (numValue > 4000) return { color: '#4CAF50', fontWeight: 'bold' }; // Green for high values
    if (numValue < 1000) return { color: '#f44336', fontWeight: 'bold' }; // Red for low values
    return { color: '#333' };
  };

  return (
    <span style={getStyle()}>
      {isTotal ? <strong>{value}</strong> : value}
    </span>
  );
}

const dataSourceSettings: DataSourceSettingsModel = {
  dataSource: data as IDataSet[],
  rows: [{ name: 'Country' }],
  columns: [{ name: 'Product' }],
  values: [{ name: 'Sales' }]
};

主要なプロパティと設定

プロパティ型説明
dataSourceSettingsobjectデータソース、フィールド、行、列、値、フィルター、集計、計算フィールド、書式を設定します
cellTemplatefunction値セル用の JSX.Element を返すカスタムセル描画関数です
gridSettingsGridSettings行の高さ、列幅、テキストの折り返し、サイズ変更、並べ替えを設定します
heightstring/numberピクセルまたはパーセンテージでコンポーネントの高さを指定します
widthstring/numberピクセルまたはパーセンテージでコンポーネントの幅を指定します
showGroupingBarbooleanドラッグ&ドロップでフィールドを管理するグループ化バーの表示/非表示を切り替えます
showFieldListbooleanフィールドリストパネル(組み込みまたはサイドパネル)の表示/非表示を切り替えます
allowCalculatedFieldbooleanフィールドリストダイアログでの計算フィールドの作成と編集を有効にします
allowExcelExportbooleanExcel エクスポート機能を有効にします
allowPdfExportbooleanPDF エクスポート機能を有効にします
allowMemberFilterbooleanフィールドリストでのメンバーフィルタリング(メンバーの選択/選択解除)を有効にします
allowLabelFilterbooleanラベルフィルタリング(テキスト/ラベル値によるフィルタリング)を有効にします
allowValueFilterboolean値フィルタリング(集計値によるフィルタリング)を有効にします
allowDrillThroughbooleanピボットデータを表示するドリルスルー機能を有効にします
allowConditionalFormattingboolean値に基づくセルの条件付き書式設定を有効にします
allowDeferLayoutUpdatebooleanフィールドリストでのフィールド操作をまとめ、「適用」をクリックしたときにのみ適用します
enableVirtualizationboolean大規模なデータセットの仮想スクロールを有効にします
enablePagingboolean行/列の分割表示にページングを有効にします
showToolbarbooleanプリセットアクションを含むツールバーの表示/非表示を切り替えます
pageSettingsPageSettingsページングの行と列のページサイズを設定します
GridSettings の設定
  • rowHeight:行の高さをピクセル単位で指定します
  • columnWidth:デフォルトの列幅を設定します
  • allowResizing:列/行のサイズ変更を有効にします
  • allowReordering:ドラッグ&ドロップによるフィールドの並べ替えを有効にします
  • allowTextWrap:セル内のテキストの折り返しを有効にします
  • columnRender:列をカスタマイズするイベントハンドラーです(例:テキストの配置)

関連スキル

  • Syncfusion React Grid:一般的なデータグリッド機能向け
  • React Data Binding:データソース管理のパターン向け

コメント