DioDocs for Excel
DioDocs for Excel
JSON ストリームのインポートとエクスポート
ファイル操作 > JSON ストリームのインポートとエクスポート

DioDocs for Excelでは、.NET Coreを使用してjsonストリームのインポートとエクスポートがサポートされます。

このトピックには、次のタスクが含まれています。

ワークブックのJSONストリームのインポートとエクスポート

IWorkbookインタフェースのToJsonメソッドを使用して、ワークブックをjson文字列またはストリームにエクスポートできます。このメソッドを使用すると、外部参照を使用した数式を含むワークブックをエクスポートすることもできます。また、IWorkbook インタフェースのFromJsonメソッドを使用して、json 文字列またはストリームをワークブックにインポートできます。

json ストリームをインポートおよびエクスポートする方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//ToJson&FromJsonはspread.sheets製品と組み合わせて使用できます

//GcExcelはExcelファイルをインポートします
//パスを実際のソースファイルパスに変更します
string source = "savingfile.xlsx";
workbook.Open(source);

//GcExcelをjson文字列にエクスポートします
var jsonstr = workbook.ToJson();
//json文字列を使用してspread.sheets製品を初期化します
//spread.sheetsはファイルの内容を表示します

//spread.sheets製品はjson文字列をエクスポートします
//GcExcelはjson文字列を使用して初期化します
workbook.FromJson(jsonstr);
//GcExcelはワークブックをExcelファイルにエクスポートします
//パスを実際のソースファイルパスに変更します

string export = "export.xlsx";
workbook.Save(export);

メモ:複雑な数式を持つワークシートを含んだ大きなワークブックを使用する場合、パフォーマンスを向上させるために、ワークブックとワークシートを個別の JSON ストリームにエクスポートおよびインポートできます。 詳細については、「ワークシートなしでのJSONのインポートとエクスポート」を参照してください。

ワークシートのJSON文字列のインポートとエクスポート

ワークシートのデータをjson文字列にエクスポートするには、IWorksheetインタフェースのToJsonメソッドを使用します。また、IWorksheetインタフェースのFromJsonを使用して、json文字列をワークシートにインポートすることができます。ワークシートは、同じまたは別のワークブックにエクスポートまたはインポートすることもできます。

本機能により、SpreadJSで大量のExcelファイルを表示することができます。 ExcelファイルはDioDocs for Excelで開くことができ、ToJsonメソッドを使用してワークシートのjson文字列をエクスポートできます。また、ワークシートのjson文字列をクライアントに転送して、SpreadJSにロードできます。

制限事項

ワークシートのjson文字列をエクスポートおよびインポートする方法については、次のサンプルコードを参照してください。

C#
コードのコピー
var workbook = new GrapeCity.Documents.Excel.Workbook();

//ToJsonメソッドとFromJsonメソッドは、SpreadJS製品と組み合わせて使用できます

//DioDocs for ExcelのExcelファイルをインポートします
string source = "ExcelJsonInput.xlsx";
workbook.Open(source);

//ファイルを開きます
GrapeCity.Documents.Excel.Workbook new_workbook = new GrapeCity.Documents.Excel.Workbook();
new_workbook.Open(source);

foreach (IWorksheet worksheet in workbook.Worksheets)
{
    worksheet.Range["D40:F40"].Value = new string[] { "Device", "Quantity", "Unit Price" };
    worksheet.Range["D41:F44"].Value = new object[,]
   { { "T540p", 12, 9850 },
        { "T570", 5, 7460 },
        { "Y460", 6, 5400 },
        { "Y460F", 8, 6240 } };

    //DioDocs for Excelのワークシートをjson文字列にエクスポートします
    string json = worksheet.ToJson();

    //json文字列を使用して、SpreadJS製品を初期化できます
    //SpreadJS製品はExcelファイルの内容を表示します
    //SpreadJS製品を使用して、ワークシートのjson文字列をエクスポートできます

    //DioDocs for Excelのjson文字列を使用して、対応するワークシートの内容を更新します
    new_workbook.Worksheets[worksheet.Name].FromJson(json);
}

//DioDocs for ExcelのワークブックをExcelファイルにエクスポートします
string export = "ExcelJsonOutput.xlsx";
new_workbook.Save(export);

JSONファイルのインポート中のエラーの取得

DioDocs for Excelでは、IWorkbookインタフェースのFromJsonメソッドを使用してJSONファイルをインポートする際にJSONエラーが発生した場合、そのエラーを取得するオプションが用意されています。エラーメッセージはJsonErrorクラスのErrorMessageプロパティによって表示されます。次の2種類のエラーメッセージがサポートされています。

次のサンプルコードは、DioDocs for Excelに数式エラーを含むJSONファイルがインポートされたときの数式JSONエラーを示しています。

C#
コードのコピー
Workbook workbook = new Workbook();
IList<JsonError> errors = workbook.FromJson(File.OpenRead("ErrorJson.json"));
foreach (JsonError item in errors)
{
    if (item is FormulaJsonError)
    {
        FormulaJsonError fError = item as FormulaJsonError;
        Console.WriteLine(fError.ErrorMessage + " " + workbook.Worksheets[fError.WorksheetName].Range[fError.Row, fError.Column].ToString() + " " + fError.Formula);
    }
    if (item is DataValidationJsonError)
    {
        DataValidationJsonError dError = item as DataValidationJsonError;
        Console.WriteLine(dError.ErrorMessage + " " + workbook.Worksheets[dError.WorksheetName].Range[dError.Range.ToString()] + " " + dError.ErrorContent);
    }
}

制限事項

JSONファイルのデータ検証の数式にエラーが発生する場合、データ検証のJSONエラーが生成されます。