[]
SpreadJS v16 引入了一种新的文件格式 .sjs,可以更快地处理大型复杂文件,并在保存时生成更小(尺寸更小)的文件。新的.sjs格式是一个压缩文件,其中包含多个较小的 JSON 文件,并且结构类似于Excel XML 结构。
GcExcel Java 允许您像 XLSX、CSV 和其他文件格式一样导入和导出新的 .sjs 文件格式。您可以使用 Workbook 类的 open 方法导入 .sjs 文件。一旦在 GcExcel 中加载,可以使用 Workbook 类的 save 方法将其导出为 Excel(XLSX)或 .sjs 文件。在加载或保存 .sjs 文件时,可以在 OpenFileFormat 和 SaveFileFormat 枚举中使用新选项"Sjs"。
请参考以下示例代码从文件名导入和导出 .sjs 文件:
// 初始化Workbook对象。
Workbook workbook = new Workbook();
// 打开.sjs文件。
workbook.open("ProjectPlan.sjs", OpenFileFormat.Sjs);
// 保存.sjs文件。
workbook.save("SaveProjectPlan.sjs", SaveFileFormat.Sjs);
请参考以下示例代码,从文件流中导入和导出 .sjs 文件:
// 创建一个新的Workbook对象。
var streamworkbook = new Workbook();
// 创建一个新的文件流来打开文件。
InputStream openFile;
try {
openFile = new FileInputStream("ProjectPlan.sjs");
// 打开.sjs文件。
streamworkbook.open(openFile, OpenFileFormat.Sjs);
} catch (FileNotFoundException e1) {
// 处理文件未找到异常。
e1.printStackTrace();
}
// 创建一个新的文件流来保存文件。
OutputStream out;
try {
out = new FileOutputStream("SaveProjectPlan.sjs");
// 将Workbook对象保存为.sjs文件。
streamworkbook.save(out, SaveFileFormat.Sjs);
} catch (FileNotFoundException e) {
// 处理文件未找到异常。
e.printStackTrace();
}
此外,GcExcel 还提供了 SjsOpenOptions 和 SjsSaveOptions 类,用于自定义 .sjs 文件的导入和导出。这些选项在处理大型文件时特别有用,比如包含许多公式、样式或未使用名称的文件。以下是这些选项:
Class | Options | Description | |
---|---|---|---|
导入选项 | SjsOpenOptions | IncludeStyles | 指示在加载 .sjs 文件时是否包含样式。默认值为 true。 |
IncludeFormulas | 指示在加载 .sjs 文件时是否包含公式。默认值为 true。 | ||
导出选项 | SjsSaveOptions | IncludeStyles | 指示在保存文件时是否包含样式。默认值为 true。 |
IncludeFormulas | 指示在保存文件时是否包含公式。默认值为 true。 | ||
IncludeUnusedNames | 指示在保存文件时是否包含未使用的自定义名称。默认值为 true。 | ||
IncludeEmptyRegionCells | 指示在保存文件时是否包含数据范围之外的任何空白单元格。默认值为 true。 |
请参考以下示例代码,使用 SjsOpenOptions 和 SjsSaveOptions 导入和导出 .sjs 文件:
// 初始化工作簿。
Workbook workbook = new Workbook();
// 打开一个 .sjs 文件并保留公式。
SjsOpenOptions openOptions = new SjsOpenOptions();
openOptions.setIncludeFormulas(false);
openOptions.setIncludeStyles(false);
workbook.open("ProjectPlan.sjs", openOptions);
// 保存 .sjs 文件不包含样式。
SjsSaveOptions saveOptions = new SjsSaveOptions();
saveOptions.setIncludeStyles(false);
saveOptions.setIncludeFormulas(true);
saveOptions.setIncludeUnusedNames(false);
saveOptions.setIncludeEmptyRegionCells(false);
workbook.save("SaveProjectPlan.sjs", saveOptions);
GcExcel 内置了 toSjsJson 方法,能够将 .sjs 文件内包含的所有 JSON 数据合并至单一的字符串或数据流中。与此同时,GcExcel 也配备了 fromSjsJson 方法,该方法可以读取源自 .sjs 文件的全部 JSON 数据所组成的字符串或流。值得一提的是,这些功能还兼容 SjsOpenOptions 和 SjsSaveOptions 配置选项,以便于更精细地控制文件的打开和保存过程。
方法 | 描述 |
---|---|
toSjsJson() | 从工作簿生成 JSON 字符串。它将 .sjs 文件中的所有 JSON 文件整合到一个单一的字符串中。 |
toSjsJson(SjsSaveOptions options) | 使用保存选项从工作簿生成 JSON 字符串。它将 .sjs 文件中的所有 JSON 文件整合到一个单一的字符串中。 |
toSjsJson(Stream stream) | 将 .sjs 文件中的所有 JSON 文件整合到一个单一的字符串中,然后将此字符串放入流中。 |
toSjsJson(Stream stream, SjsSaveOptions options) | 使用保存选项将 .sjs 文件中的所有 JSON 文件整合到一个单一的字符串中,然后将此字符串放入流中。 |
fromSjsJson(string json) | 从包含 .sjs 文件格式内容的 JSON 字符串生成工作簿。 |
fromSjsJson(string json, SjsOpenOptions options) | 使用打开选项从包含 .sjs 文件格式内容的 JSON 字符串生成工作簿。 |
fromSjsJson(Stream stream) | 从包含 .sjs 文件格式内容的 JSON 流生成工作簿。 |
fromSjsJson(Stream stream, SjsOpenOptions options) | 使用打开选项从包含 .sjs 文件格式内容的 JSON 流生成工作簿。 |
参照以下示例代码来导出和导入由 .sjs 文件生成的单一 JSON 字符串:
// Initialize Workbook.
Workbook workbook = new Workbook();
// Open workbook.
workbook.open("12-month cash flow statement1.sjs");
// Generate a JSON string for .sjs file and save it to a stream.
OutputStream outputStream;
try {
outputStream = new FileOutputStream("CashFlow.json");
workbook.toSjsJson(outputStream);
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// Import a JSON string from the stream and save it as an Excel file.
InputStream inputStream;
try {
inputStream = new FileInputStream("CashFlow.json");
workbook.fromSjsJson(inputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// Save workbook.
workbook.save("CashFlow.xlsx");
GcExcel允许您在将 .sjs 文件导出为PDF或图像时,使用 WorkbookOptions 类的 setPixelBasedColumnWidth 方法基于像素而不是字符来渲染列宽。
参照以下示例代码,了解在导出为PDF或图像时如何基于像素渲染列宽:
// Initialize WorkbookOptions.
WorkbookOptions workbookOptions = new WorkbookOptions();
// Enable pixel-based column width for the workbook.
workbookOptions.setPixelBasedColumnWidth(true);
var workbook = new Workbook(workbookOptions);
// Open SSJSON file.
workbook.open("Event budget.sjs");
IWorksheet worksheet = workbook.getWorksheets().get(0);
// Save to a PDF and PNG file.
workbook.save("SavePDFWithPixelBasedColumnWidth.pdf");
worksheet.toImage("SavePDFWithPixelBasedColumnWidth.png");