SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

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

xamWebGridの使い方と主な特徴

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

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において業務用途を想定したアプリケーション開発を行う際の強力な武器になることは間違いありませんので、ぜひ活用してみてください。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

インフラジスティックス・ジャパン株式会社 山田 達也(インフラジスティックス・ジャパンカブシキガイシャ ヤマダ タツヤ)

国内ソフトベンダーにて多数の.NETプロジェクトに携わる。現在はインフラジスティックス・ジャパンで開発サポートを担当しつつ、リッチクライアントやRIA技術を広めるべくエバンジェリスト修行中。趣味は全国競馬場巡りで夢はラスベガス在住。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4642 2009/12/01 17:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング