メモリワークブック

ReoGridでは画面に表示せずメモリ上で動作するワークブックも提供しています。メモリワークブックは、メモリ上でシートのデータを処理したり、Excel ファイルの内容を処理したりする際に役立ちます。メモリワークブックは画面に表示するために必要な要素やリソースを含んでいないため、より軽く速く動作できます。また、Windows Formアプリケーションに限らず、Webアプリケーションでも動作・利用できます。

Web アプリケーションで、アップロードデータを受け取る際の構成例は下図の通りです。 ja55

また、データベースから Excel や CSV を生成して、ダウンロードする際の構成例は下図の通りです。 ja56

メモリワークブックの作成

メモリワークブックのインスタンスを作成するには、コンポーネントの静的なメソッド CreateMemoryWorkbook を利用します。

var workbook = ReoGridControl.CreateMemoryWorkbook();

使用例:Excelファイルを読み込む

workbook.Load(@"C:\\テンプレート.xlsx", FileFormat.Excel2007);

利用可能API

メモリワークブックは通常の画面上に表示するワークブックと比べ、利用可能な機能とできない機能があります。

元データの操作 API はすべて利用可能です。例えば Excel ファイルの読み込み、書き込み、データ処理などは利用可能で、関数のインターフェイスも画面上のコンポーネントと同じです。主な利用可能な API は以下の通りです。

  • ワークシート管理用API
    • CreateWorksheetAddWorksheet
    • InsertWorksheet / RemoveWorksheet
    • CopyWorksheet / MoveWorksheet
    • GetWorksheetByName / GetWorksheetIndex
  • Worksheets プロパティ
  • Excel、CSV、RGFファイルの読み込みと書き込み、Load と Save 関数
  • Worksheetにあるデータの操作
  • すべてのワークブックのイベント
  • 内部処理エクセプションの通知機能

利用不可API

利用不可の API は以下の通りです。

  • CurrentWorksheet プロパティ:メモリワークブックはシートタブを含んでいないため、現在表示中のワークシートはありません。ワークシートを取得したい場合、Worksheets コレクションを利用してください。
  • スクロールバー関連のメソッドとイベント:メモリワークブックはスクロールバーを含んでいないため、これらのメソッドとイベントは利用できません。
  • コンポーネント外観スタイル:画面に表示しないため、コンポーネントのスタイルオブジェクトを含んでいません。
  • テキスト、グラフィック、UI関連のメソッドやリソース:メモリワークブックは画面に表示せず、メモリ上で高速に動作するよう設計していますので、テキストのフォントやグラフィックのためのリソースを持ちません。これにより、一部のフォントやグラフィックに依存するメソッドが利用できません。例えば FitWidthToCells と FitHeightToCells メソッドは利用できません。
  • アクション関連のメソッド:メモリワークブックは UndoRedoRepeatLastAction などのメソッドを含んでいません。メモリワークブックへの操作はすべてすぐ実行するように設計しています。

Webアプリケーションでメモリワークブックを利用する

メモリワークブックは Windows Form や WPF に依存せず、.NET メモリ上で動作する表計算スプレッドシートライブラリです。Windows Form や WPF アプリケーションで利用できるほか、Web アプリケーションでも利用できます。以下の例は、ASP.NET で Excel ファイルを作成し、ダウンロードするソースコードです。

ソースコード例:ASP.NET で Excel ファイルを作成してダウンロードする

ASPXページのソースコードの例:

protected void Page_Load(object sender, EventArgs e)
{
  // メモリワークブックを作成
  var wb = ReoGridControl.CreateMemoryWorkbook();

  // 一つ目のデフォルトのワークシートを取得
  var sheet1 = wb.Worksheets[0];

  // セルA1にテキストを格納
  sheet1["A1"] = "Hello World";

  // セルA2、B2、C2、D2、E2にデータを格納
  sheet1["A2"] = new object[] {
    10, // B2
    20, // C2
    "=B2+C2", // D2
    "=SUM(B2:D2)", // E2
  };

  // 現在のレスポンスをクリア
  Response.Clear();

  // ダウンロード名を指定
  Response.AddHeader("Content-Disposition", "attachment; filename=SampleData.xlsx");
  // レスポンスのストリーム型を指定
  Response.ContentType = "application/octet-stream";

  // Excelファイルをストリームに出力
  wb.Save(Response.OutputStream, unvell.ReoGrid.IO.FileFormat.Excel2007);

  // レスポンスのデータをクリア
  Response.Output.Flush();
  // レスポンスを終了
  Response.End();
}

この例では簡単なテキストと数値のデータをワークシートに格納し、メモリワークブックの Save メソッドを呼び出して Excel ファイルを作成してダウンロードしました。テキストや数値を格納する前に、あるExcel ファイルを読み込んでその一部を書き換えた上で、再度 Excel ファイルとして出力するという複雑なフォーマットの帳票も簡単に作成できます。


ページの内容は役に立ちましたか?