[]
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");