LightCells APIの使用
イベント駆動アーキテクチャ
Aspose.Cellsは、セルのコレクションなどの完全なデータモデルブロックをメモリに構築せずに、イベント駆動モードでセルデータを1つずつ操作するために、LightCells APIを提供しています。
ワークブックを保存するには、セルの内容を1つずつ提供し、コンポーネントがそれを直接出力ファイルに保存します。
テンプレートファイルを読み込む際に、コンポーネントはすべてのセルを解析し、その値を1つずつ提供します。
両手順ともに、1つのCellオブジェクトが処理され、その後破棄され、Workbookオブジェクトはコレクションを保持しません。そのため、このモードでは、大規模なデータセットを持つMicrosoft Excelファイルのインポートおよびエクスポート時にメモリを節約することができます。
LightCells APIは、XLSXファイルとXLSファイルでセルを同じように処理します(実際にはすべてのセルをメモリに読み込むのではなく、1つのセルを処理してから破棄します)が、XLSXファイルではXLSファイルよりもメモリを効果的に節約します。これは2つのフォーマットの異なるデータモデルと構造のためです。
ただし、XLSファイルの場合、より多くのメモリを節約するには、開発者が保存プロセス中に生成される一時データの保存に一時的な場所を指定することができます。通常、LightCells APIを使用してXLSXファイルを保存する場合、約50%以上のメモリを節約できますが、XLSを保存する場合は20-40%のメモリを節約できます。
大規模なExcelファイルの書き込み
Aspose.Cellsは、大規模なスプレッドシートファイルを軽量モードで保存するためにプログラムで実装する必要があるLightCellsDataProviderというインターフェースを提供しています。
このモードでワークブックを保存する場合、ワークブック内のすべてのワークシートを保存する際にStartSheet(int)がチェックされます。1つのシートについて、StartSheet(int)がtrueの場合、この実装によって保存されるこのシートのすべての行とセルのデータやプロパティが提供されます。まず、次の行インデックスを取得するためにNextRow()が呼び出されます。有効な行インデックスが返されると(行インデックスは保存する行の順序が昇順である必要があります)、この行を表すRowオブジェクトが提供され、そのプロパティをStartRow(Row)によって設定するために実装されます。
1行について、まずNextCell()がチェックされます。有効な列インデックスが返されると(列インデックスは1行のすべてのセルが保存されるために昇順である必要があります)、そのセルを表すCellオブジェクトが提供され、そのデータやプロパティをStartCell(Cell)によって設定するために実装されます。セルのデータが設定された後、セルは直接生成されたスプレッドシートファイルに保存され、次のセルがチェックされて処理されます。
大規模なExcelファイルの書き込み:例
LightCells APIの動作を確認するために、以下のサンプルコードを参照してください。必要に応じてコードセグメントを追加、削除、または更新してください。
プログラムはワークシート内に10,000(10000x30マトリックス)レコードを持つ巨大なファイルを作成し、それらをダミーデータで埋めます。Main()メソッド内のrowsCountとcolsCount変数を変更して、独自のマトリックスを指定することができます。
大規模なExcelファイルの読み込み
Aspose.Cellsは、プログラムで実装する必要のあるLightCellsDataHandlerというインターフェースを提供します。このインターフェースは、軽量モードで大規模なスプレッドシートファイルを読み込むためのデータプロバイダを表します。
このモードでワークブックを読み込む際、ワークブック内のすべてのワークシートを読み込む際にStartSheetがチェックされます。ワークシートについて、StartSheetがtrueを返すと、そのシート内の行と列のセルのすべてのデータやプロパティがこのインターフェースの実装によってチェックされ、処理されます。各行については、処理が必要かどうかをチェックするためにStartRowが呼び出されます。行が処理が必要な場合、まずそのプロパティが読み取られ、開発者はProcessRowを使用してそのプロパティにアクセスすることができます。また、行のセルも処理する必要がある場合、ProcessRowはtrueを返し、その後、行内の各セルが処理されるためにStartCellが呼び出されます。1つのセルが処理される必要がある場合、ProcessCellが呼び出され、このインターフェースの実装によってセルが処理されます。
大規模なExcelファイルの読み込み:例
LightCells APIの動作を確認するために、以下のサンプルコードを参照してください。必要に応じてコードセグメントを追加、削除、または更新してください。
プログラムはワークシート内に数百万のレコードが含まれる巨大なファイルを読み込みます。ワークブック内の各シートを読み込むには少し時間がかかります。サンプルコードはファイルを読み込み、各ワークシートにおけるセルの総数、文字列の数、および数式の数を取得します。