DevExpress社ASP.NETを利用して、SQL Serverのテーブルデータをxlsx形式でダウンロードする

DevExpress社ASP.NETの、グリッド(ASPxGridView)のダウンロードは、ASPxGridViewExporterというクラスが用意されているが、以下のような制約があり使い勝手が悪い。そこで、DevExpress社WinFormsの、グリッド(GridView)クラスを使って、自前でダウンロード処理を実装する。

ASPxGridViewExporterの制約

  • 画面で表示されている項目しかダウンロードされない
  • リボンやコンテキストメニューなど任意のアクションで処理ができない

処理シーケンス

簡単な処理シーケンスは以下の通り

ソースの解説

test.js

Javascriptからは、リンクのhtmlタグを動的に生成し、クリックイベントを起こす

ExportController.cs

ASP.NETでは、ダウンロード用のApiControllerを継承したクラスを作成し、各拡張子に対応したメソッドを作成する。
※GridViewを使用する際は、必ず画面(XtraFormクラス)を生成する。画面を生成しなかった場合は、xlsxは出力されるが、xlsxに内容が出力されない。

TestDbContext.cs

SQL Serverからのテーブルデータ取得先は、DataTableに格納する。
※カラムコメントをグリッドの項目名にするため、SQL Serverのテーブルにカラムコメントを記述しておく。カラムコメントがない場合は、項目が生成されない。

取得する画面のイメージ

ダウンロードしたのxlsxのイメージ

DevExpress社WinFormsの、グリッド(GridView)クラスを利用すれば、webシステムでも簡単にエクスポート処理ができることが確認できた。
GridViewクラスは他にも、csvやpdfなどの出力メソッドが提供されているため、他の拡張子にも応用できる。

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする