none
DataTableからクロス集計(ピポットテーブル)の作成 RRS feed

  • 質問

  •  

     皆様また、質問をさせてください。

     

    VisualStudio2008を使用してWindowsアプリを作成しています。

     

    件名のとおりピポットテーブルを作成したいと考えております。

    サードパーティ製品などが存在することは承知なのですが、

    それを使用せずに実現ができないか検討中です。

     

    実現したい内容はSQLなどで取得したデータをクリスタルレポートのクロス集計ウィザードのようなフォーム

    でユーザーに項目を選択させ、その結果をDataGridViewなどで

    表示ができればと思っております。(別に出力するものにこだわりはありません)

     

    http://www.codeproject.com/KB/recipes/CsharpPivotTable.aspx

    上記URLなどいろいろ検索を行ったのですがそのほとんどが

    選択する項目数を限定されたものしかなくあまり実用的では

    なかったため、途方にくれています。。

     

    どなたかこのようなアプリケーションを作成されたご経験の方は

    いらっしゃいますでしょうか?

     

    またピポットテーブルのようなものは作成できるのでしょうか?

    2008年12月12日 9:36

回答

  • おはようございます!(^^)!ふ~です。

     

    >ピポットテーブルのようなものは作成できるのでしょうか?

     

    メモリーテーブルを作成し、検索と並び替えをするのでしょうが、面倒ですので、Excelが便利と思います。

    VS2008でプロジェクトを作成する時に、Excel2007ブック(VisualC#->Office->2007->Excel2007ブック)

    を選択するとExcelブックとなります。

     

    ◇ご参考資料

    Excelのピボットテーブル

    http://www.sweety.jp/honobono/faq/pibo/index.htm

    2008年12月18日 1:13
  •  さとさと さんからの引用

    仮に2005にバージョンアップを行った場合にはユーザーがExcelのピポットテーブルを

    使用するみたいにデータを動的に取得できるのでしょうか?

    出力したい項目が固定ではなくユーザーサイドで選択できるのが理想です。

     

    pivotはSQL文で作成しますので、動的にpivotを作成するSQL文を作成するようにすれば可能だと思います。

    以下が参考になりませんでしょうか?

     

    列・行ともに動的なマトリックスレポートについて
    http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=3461591&SiteID=7

    2008年12月18日 11:39
    モデレータ

すべての返信

  • おはようございます!(^^)!ふ~です。

     

    >ピポットテーブルのようなものは作成できるのでしょうか?

     

    メモリーテーブルを作成し、検索と並び替えをするのでしょうが、面倒ですので、Excelが便利と思います。

    VS2008でプロジェクトを作成する時に、Excel2007ブック(VisualC#->Office->2007->Excel2007ブック)

    を選択するとExcelブックとなります。

     

    ◇ご参考資料

    Excelのピボットテーブル

    http://www.sweety.jp/honobono/faq/pibo/index.htm

    2008年12月18日 1:13
  • >またピポットテーブルのようなものは作成できるのでしょうか?

     

    SQL Server 2005以降でしたらpivotが使えますので、それを活用できませんでしょうか?

    2008年12月18日 4:06
    モデレータ
  •  

    皆様ご返信ありがとうございました。

     

    早速ですが、

    trapemiya さま

    >SQL Server 2005以降でしたらpivotが使えますので、それを活用できませんでしょうか?

     

    私の情報が少なすぎましたね、現在使用しているSQLはSQL Server2000を使用しております。

    仮に2005にバージョンアップを行った場合にはユーザーがExcelのピポットテーブルを

    使用するみたいにデータを動的に取得できるのでしょうか?

    出力したい項目が固定ではなくユーザーサイドで選択できるのが理想です。

     

    !(^^)!ふ~ さま

     

    >メモリーテーブルを作成し、検索と並び替えをするのでしょうが、面倒ですので、Excelが便利と思います。

    >VS2008でプロジェクトを作成する時に、Excel2007ブック(VisualC#->Office->2007->Excel2007ブック)

    >を選択するとExcelブックとなります。

     

    私も最初検討したのですが、現在ユーザーが使用しているExcelのバージョンが

    2000,xp,2003,2007と統一されておりません。

     

    http://support.microsoft.com/default.aspx?scid=kb;ja;302902

    上記サイトに遅延バインディングを使用するオートメーション クライアントの作成

    というところまでは調べられたのですが、コードが私には難解で

    実際にデータをExcelに出力をしてPivotを作成するのはどうしたらいいのか

    わかりません。

     

    サンプルなどが他にもあればいいのですが、ご存知でしょうか?

     

    2008年12月18日 6:28
  •  さとさと さんからの引用

    仮に2005にバージョンアップを行った場合にはユーザーがExcelのピポットテーブルを

    使用するみたいにデータを動的に取得できるのでしょうか?

    出力したい項目が固定ではなくユーザーサイドで選択できるのが理想です。

     

    pivotはSQL文で作成しますので、動的にpivotを作成するSQL文を作成するようにすれば可能だと思います。

    以下が参考になりませんでしょうか?

     

    列・行ともに動的なマトリックスレポートについて
    http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=3461591&SiteID=7

    2008年12月18日 11:39
    モデレータ
  • こんにちは。中川俊輔 です。

     

    !(^^)!ふ~さん、trapemiyaさん、回答ありがとうございます。

     

    さとさとさん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、!(^^)!ふ~さん、trapemiyaさんの回答へ回答済みチェックをつけさせていただきました。

    pivotの作成だと下記の関数でしょうか?詳しいサンプルはみつかりませんでした。

    CreatePivotTable メソッド

    http://msdn.microsoft.com/ja-jp/library/cc383749.aspx

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2009年1月5日 8:44