DioDocs for Excel では、ワークブックの枠組みをJSONストリームに変換することができます。つまり、データを持たないワークシートだけを含むワークブックをエクスポートすることができるということです。これは、SerializationOptions.IgnoreSheetsにtrueを設定し、IWorkbook.ToJsonメソッドを呼び出す際にパラメータとして渡すことで実装できます。 IWorksheet.ToJson(Stream stream)メソッドを使用すれば、ワークシートだけを別のJSONストリームにエクスポートすることも可能です。同様に、IWorkSheet.FromJson(Stream stream)を使用すると、必要なときにJSONストリームからワークシートをインポートすることができます。
この機能は、複雑な数式を含むワークシートが多数存在する大規模なワークブックを読み込む際に、パフォーマンスを最適化するために特に有効です。上記の方法を使用すると、例えばSpreadJSにて、ワークシート名を含む空白のワークブックをまず読み込み、任意のワークシートが選択された際にそのデータを別途読み込むことができます。
以下の例では、ワークブックとワークシートを別々のJSONストリームにエクスポートし、必要なときに新規のワークブックのインスタンスに読み込む方法を示しています。
| C# |
コードのコピー
|
|---|---|
{
//新規のワークブックを作成します。
var workbook = new GrapeCity.Documents.Excel.Workbook();
//元のワークブックです。
var oldWorkbook = new GrapeCity.Documents.Excel.Workbook();
oldWorkbook.Open("12-month cash flow statement1.xlsx");
using (Stream workbookStream = new FileStream("workbook.json", FileMode.Create))
{
//ワークシートなしでワークブックの枠組みをJSONストリームにエクスポートします。
oldWorkbook.ToJson(workbookStream, new SerializationOptions { IgnoreSheets = true });
//新規のワークブックにJSONストリーム(ワークブックのみ)をインポートします。
workbook.FromJson(workbookStream);
}
using (Stream worksheetStream = new FileStream("worksheet.json", FileMode.Create))
{
//ワークシートをJSONストリームにエクスポートします。
oldWorkbook.ActiveSheet.ToJson(worksheetStream);
//新しいワークブックにJSONストリーム(ワークシート)をインポートします。
workbook.ActiveSheet.FromJson(worksheetStream);
}
//Excelファイルに保存します。
workbook.Save("workbooktojsonwithoutsheets.xlsx");
}
|
|