NetAdvantage ExcelエンジンをxamWebGridで活用
NetAdvantage Silverlight LOBには、エクセル入出力機能を行う「NetAdvantage Excelエンジン」が搭載されています。これを使うことで、例えばサーバーサイドでExcelを生成するサービスを構成することなく、Silverlightアプリケーション上でExcel入出力が可能になります。もちろん、クライアントにMicrosoft Officeがインストールされていない環境でも問題なく使用できます。
Excelエンジンを利用する場合は、以下の参照設定が必要になるのであらかじめ追加しておいてください。
- アセンブリ名: Infragistics.Silverlight.Excel.v9.2
グリッドの表示内容をもとにExcelエクスポートを行う場合、まずxamWebGridのヘッダーや行の情報を、ExcelエンジンのWorkbookオブジェクトにコピーします。そのための実装は以下のようになります。
private void ExportGrid()
{
//WorkBook, Worksheetを生成
Workbook wb = new Workbook();
Worksheet sheet1 = wb.Worksheets.Add("得意先リスト");
//表示固定を行う行・列を指定
sheet1.DisplayOptions.PanesAreFrozen = true;
sheet1.DisplayOptions.FrozenPaneSettings.FrozenRows = 1;
sheet1.DisplayOptions.FrozenPaneSettings.FrozenColumns = 1;
//ヘッダーを生成
int currentColumn = 0;
foreach (ColumnBase column in this.grid.Columns)
{
//表示列のみ対象とする
if (column.Visibility == Visibility.Visible)
{
sheet1.Rows[0].Cells[currentColumn].Value = column.Key;
currentColumn++;
}
}
//データをExport
int currentRow = 1;
foreach (Row row in this.grid.Rows)
{
int currentCell = 0;
foreach (Cell cell in row.Cells)
{
if (cell.Column.Visibility == Visibility.Visible)
{
sheet1.Rows[currentRow].Cells[currentCell].Value = cell.Value;
currentCell++;
}
}
currentRow++;
}
this.SaveExport(wb);
}
xamWebGridの内容をWorkbookオブジェクトに出力するコード例
ここではExcelシート上における固定列・行の設定を行っている程度ですが、もちろん列やセルごとにスタイルや幅を変更することも可能です。
作成したWorkbookオブジェクトは、Saveメソッドを使用することでストリームに出力することができますので、標準のSaveFileDialogを用いてローカルファイルに保存するためには以下のようなコードを記述します。
private void SaveExport(Workbook dataWorkbook)
{
SaveFileDialog dialog = new SaveFileDialog { Filter = "Excel files|*.xls", DefaultExt = "xls" };
bool? showDialog = dialog.ShowDialog();
if (showDialog == true)
{
using (Stream exportStream = dialog.OpenFile())
{
dataWorkbook.Save(exportStream);
exportStream.Close();
}
}
}
まとめ
今回の記事ではxamWebGridの使い方や主な特徴、Excel連携における活用法などをざっと解説しました。繰り返しになりますが、xamWebGridは標準のデータグリッドにない様々な付加機能とともに、高いパフォーマンス性を最大の特徴としています。Silverlightにおいて業務用途を想定したアプリケーション開発を行う際の強力な武器になることは間違いありませんので、ぜひ活用してみてください。


