Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Silverlight用の高機能データグリッドコントロール
「xamWebGrid」活用術

xamWebGridの使い方と主な特徴

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

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を用いてローカルファイルに保存するためには以下のようなコードを記述します。

作成したWorkbookオブジェクトをファイルに保存
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();
        }
    }
}
図9 出力したExcelファイルを開いたところ
図9 出力したExcelファイルを開いたところ

まとめ

 今回の記事ではxamWebGridの使い方や主な特徴、Excel連携における活用法などをざっと解説しました。繰り返しになりますが、xamWebGridは標準のデータグリッドにない様々な付加機能とともに、高いパフォーマンス性を最大の特徴としています。Silverlightにおいて業務用途を想定したアプリケーション開発を行う際の強力な武器になることは間違いありませんので、ぜひ活用してみてください。



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

著者プロフィール

バックナンバー

連載:Infragistics NetAdvantageチュートリアル

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5