2

大量の価格データをホストしている Web サービスがあり、所定のクエリ パラメータに関連するデータを返します。データは Datatable オブジェクト (C# の場合) として返されます。オブジェクト タイプ自体は、データが直接メモリに格納され、ホスト Excel オブジェクトのスプレッドシートに存在しないという事実ほど重要ではありません。

ここで、このデータからピボットテーブルを作成したいと思います。

私はウェブ上で高低を見てきましたが、これを行う方法を説明している人は誰もいません。無理ですか?VSTO を今後 Web サービス データを使用する唯一のサポートされている方法として提案するのはばかげているように思えますが、そのデータからピボットテーブルを作成することは不可能です。

私が持っている唯一の解決策はクラッジです。これらの醜いことのいずれかを行う前に、適切な解決策がないことを確認したいと思います。

  1. データテーブルを Excel シートにダンプし、ピボットテーブルを Excel 範囲にポイントします。データセット全体で行単位の削除を行っているか (非常に遅い)、2 倍のメモリ消費量でピークに達しているため、これは理想とはほど遠いものです。
  2. データテーブルをファイルシステムにダンプし、ピボットテーブルをフラットファイルに向けます。これはさらに悪いことですが、少なくともメモリの欠点はありません。

これらは本当にこの操作を行う唯一の方法ですか? もっと優雅なものがあるはずです。

データテーブル: http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx

ピボットキャッシュ: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.pivottable.pivotcache(v=office.11 ​​).aspx

4

1 に答える 1

1

データからピボットテーブルを作成するには、Excel がデータを表示してアクセスできる必要があります。そのため、データがピボットテーブル ローダーが読み取れる場所にあることを確認する必要があります。さらに、Excel は COM ベースであり、.NET オブジェクトを表示したり処理したりすることはできません。

それはとてもシンプルです。

選択肢は次のとおりです。

  1. データを Excel 範囲にロードする

  2. データをファイルに保存する

  3. データをデータベース (Access、SQL Server など) に保存します。

  4. データをデータ ウェアハウス (SSAS、オフライン キューブなど) に保存します。

それでおしまい。他にリモートで可能な唯一の方法は、OLE DB または ODBC データ ソースとして表示するために必要な COM インターフェイスを実装することですが、それは非常に手間のかかる作業です。

于 2013-04-05T19:33:33.750 に答える