ReoGridでは画面に表示せずメモリ上で動作するワークブックも提供しています。メモリワークブックは、メモリ上でシートのデータを処理したり、Excel ファイルの内容を処理したりする際に役立ちます。メモリワークブックは画面に表示する必要な要素やリソースを含んでいないため、より軽く速く動作できます。また、Windows Formアプリケーションに限らず、Webアプリケーションでも動作・利用できます。
Web アプリケーションで、アップロードデータを受け取る際の構成例は下図の通りです。
また、データベースから Excel や CSV を生成して、ダウンロードする際の構成例は下図の通りです。
メモリワークブックの作成
メモリワークブックのインスタンスを作成するには、コンポーネントの静的なメソッド CreateMemoryWorkbook
を利用します。
var workbook = ReoGridControl.CreateMemoryWorkbook();
使用例:Excelファイルを読み込む
workbook.Load(@"C:\\テンプレート.xlsx", FileFormat.Excel2007);
利用可能API
メモリワークブックは通常の画面上に表示するワークブックと比べ、利用可能な機能とできない機能があります。
元データの操作 API はすべて利用可能です。例えば Excel ファイルの読み込み、書き込み、データ処理などは利用可能で、関数のインターフェイスも画面上のコンポーネントと同じです。主な利用可能な API は以下の通りです。
- ワークシート管理用API
CreateWorksheet
/AddWorksheet
InsertWorksheet
/RemoveWorksheet
CopyWorksheet
/MoveWorksheet
GetWorksheetByName
/GetWorksheetIndex
- Worksheets プロパティ
- Excel、CSV、RGFファイルの読み込みと書き込み、
Load
とSave
関数 - Worksheetにあるデータの操作
- すべてのワークブックのイベント
- 内部処理エクセプションの通知機能
利用不可API
利用不可の API は以下の通りです。
CurrentWorksheet
プロパティ:メモリワークブックはシートタブを含んでいないため、現在表示中のワークシートはありません。ワークシートを取得したい場合、Worksheets
コレクションを利用してください。- スクロールバー関連のメソッドとイベント:メモリワークブックはスクロールバーを含んでいないため、これらのメソッドとイベントは利用できません。
- コンポーネント外観スタイル:画面に表示しないため、コンポーネントのスタイルオブジェクトを含んでいません。
- テキスト、グラフィック、そしてUI関連のメソッドやリソース:メモリワークブックは画面に表示せず、メモリ上で高速に動作するよう設計していますので、テキストのフォントやグラフィックのためのリソースを持ちません。これにより、一部のフォントやグラフィックに依存するメソッドが利用できません。例えば
FitWidthToCells
とFitHeightToCells
メソッド。 - アクション関連のメソッド:メモリワークブックは
Undo
、Redo
、RepeatLastAction
などのメソッドを含んでいません。メモリワークブックへの操作はすべてすぐ実行するように設計しています。
Webアプリケーションでメモリワークブックを利用する
メモリワークブックは Windows Form や WPF に依存せず、.NET メモリ上で動作する表計算スプレッドシートライブラリです。Windows Form や WPF アプリケーションで利用できるほか、Web アプリケーションでも利用できます。以下の例は、ASP.NET で Excel ファイルを作成し、ダウンロードするソースコードです。
ソースコード例:ASP.NET で Excel ファイルを作成してダウンロードする
ソースコードはあるASPXページ.csファイルにあります。
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 ファイルとして出力すると、簡単に複雑なフォーマットの帳票でも作成できます。