[]
        
(Showing Draft Content)

导入和导出.sjs文件

SpreadJS v16 引入了一种新的文件格式 .sjs,可以更快地处理大型复杂文件,并在保存时生成更小(尺寸更小)的文件。新的.sjs格式是一个压缩文件,其中包含多个较小的 JSON 文件,并且结构类似于Excel XML 结构。

GcExcel Java 允许您像 XLSX、CSV 和其他文件格式一样导入和导出新的 .sjs 文件格式。您可以使用 Workbook 类的 open 方法导入 .sjs 文件。一旦在 GcExcel 中加载,可以使用 Workbook 类的 save 方法将其导出为 Excel(XLSX)或 .sjs 文件。在加载或保存 .sjs 文件时,可以在 OpenFileFormatSaveFileFormat 枚举中使用新选项"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 还提供了 SjsOpenOptionsSjsSaveOptions 类,用于自定义 .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);

导入导出 .sjs JSON 字符串或者字符流

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