[]
        
(Showing Draft Content)

只导出工作簿结构

GcExcel允许您将工作簿的结构转换为JSON流。您可以通过设置 SerializationOptions.setIgnoreSheets 方法为true,来实现只导出包含工作表结构的工作簿,而不导出其中的任何内容。然后在调用 IWorkbook.toJson 方法时将其作为参数传递。

还可以使用 IWorksheet.toJson(Stream stream) 方法单独将工作表导出成JSON流。类似地,可以使用 IWorkSheet.fromJson(Stream stream) 方法在需要时将JSON流导入到指定的工作簿中。

在加载包含许多包含复杂公式的工作表的大型工作簿时,此功能在优化性能方面尤其有用。使用上述方法,可以先加载带有工作表名称的空工作簿,然后在用户选择工作表选项卡时加载工作表数据。但对于一些特殊情况可能需要单独的进行处理,例如跨工作表的公式等

下面的示例演示了如何将工作簿和工作表导出为单独的JSON流,并在需要时将其加载到新的工作簿实例中。

// Create a new workbook
Workbook workbook = new Workbook();

// The old workbook.
IWorkbook oldWorkbook = new Workbook();

InputStream fileStream = getResourceStream("xlsx\\12-month cash flow statement1.xlsx");
oldWorkbook.open(fileStream);

FileOutputStream workbookOutputJson = null;
FileInputStream workbookInputJson = null;
FileOutputStream worksheetOutputJson = null;
FileInputStream worksheetInputJson = null;

try {
    SerializationOptions serializationOptions = new SerializationOptions();
    serializationOptions.setIgnoreSheets(true);
    // Export the skeleton of the workbook without worksheets to json stream. 
    workbookOutputJson = new FileOutputStream("workbookJava.json");
    oldWorkbook.toJson(workbookOutputJson, serializationOptions);
    // Import the workbook stream.
    workbookInputJson = new FileInputStream("workbookJava.json");
    workbook.fromJson(workbookInputJson);

    // Export the worksheet to json stream. 
    worksheetOutputJson = new FileOutputStream("worksheetJava.json");
    oldWorkbook.getActiveSheet().toJson(worksheetOutputJson);

    // Import the worksheet stream.
    worksheetInputJson = new FileInputStream("worksheetJava.json");
    workbook.getActiveSheet().fromJson(worksheetInputJson);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} finally {
    // Close streams.
    try {
        if (workbookOutputJson != null) {
            workbookOutputJson.close();
        }
        
        if (workbookInputJson != null) {
            workbookInputJson.close();
        }
        
        if (worksheetOutputJson != null) {
            worksheetOutputJson.close();
        }
        
        if (worksheetInputJson != null) {
            worksheetInputJson.close();
        }
    } catch (Exception e2) {
        // TODO: handle exception
    }
}
    
// Save to an excel file
workbook.save("WorkbookToJsonWithoutSheets.xlsx");