[{"id":"ff052704-1389-4029-bcdd-73c6cbe9f807","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"8e72e33e-b4ab-4fb3-98fc-a0b148134aed","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"c90d5fdf-420f-4978-8bf5-c9a2bb4334b3","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"900e6cab-065d-4f1c-844d-efa3c074e270","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"760b37c7-c713-4b24-b9ba-4bfe7d8437a6","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"89c707ed-9841-4e53-96fb-940cc3214804","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"64e2f4a3-2303-4bfa-8a93-6c23ef01de58","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"aa71a884-c5bc-4842-8d6a-873dfd645167","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"2605431b-dc80-491d-886e-28981595d277","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"69e79655-e015-4f9a-a230-2a25c988c926","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"a570c8e7-07a2-47da-965b-da44fd1fa5cf","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"86662220-9b9e-4940-9ced-d22642ea49a8","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"24769ecd-2b08-4a85-b318-4f533bbf8393","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"a244ead7-a2c6-47a3-ac17-c5dbfa337362","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"04e73782-aa78-4dfe-a4f9-e72ed4c78a11","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"4f41e22e-eb51-49e5-aeae-a42dd6bf352c","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"790bc77a-9216-48fd-b8f9-fbc374ebb155","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"21c6131f-0f2d-41d1-9284-6ad9ee803c1f","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"7ded3a22-15eb-49b8-a488-e83c2cd872eb","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"33638a1c-7196-42c1-a96d-38b2d9ba8ac4","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"4a0842a3-20b1-40c3-8e00-cd5941ffdf53","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"6e6ac5b1-1501-4e28-89cc-525139488537","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"b0576ca2-cb84-4390-9f95-9354ec20eda5","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"55fd3bb8-18d4-4edb-9640-ca3a365b798f","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"dacc7931-6785-4675-be31-80930403cf7b","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"63c577e6-6cf9-497e-94e1-2307f7d3f498","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"1b88a165-2563-437e-99bb-ae30bd4b56db","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"adf3817f-7667-4a4c-8a5f-767b0b7e1e3e","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"3a083583-1d5f-492b-b450-34b2b5c775b8","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"5d37413b-3600-4da9-9700-feea54355f59","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"a5a73576-16ea-4cbc-925c-ef547389eaa5","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"1126cfab-6210-4e28-bee0-02c113fb7a0c","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"09a66339-64c0-415c-b142-0691587a8e4a","tags":[{"product":null,"links":null,"id":"9e117e35-984a-4c14-95ca-ef0ec7b9fb60","name":"\u65B0\u589E","color":"DarkGreen","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"0baaf91d-84f6-404c-a487-735226b6d5b6","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"5b7aeac5-c755-426a-95c7-1ae8e547179a","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]},{"id":"57c94653-8893-403b-a5b1-0d1e33a0bd0f","tags":[{"product":null,"links":null,"id":"a2f84374-4a3f-4d22-96fd-765e9de495bf","name":"\u66F4\u65B0","color":"Coral","productId":"098be112-50ec-44e4-b746-6bc8bf76af97"}]}]
        
(Showing Draft Content)

Vue V16导入导出新变化

问题:SpreadJS V16版本更新后导入导出的逻辑有哪些变化?


背景:

Excel文件的导入导出是一种常见且便捷的数据处理方式。通过使用Excel,用户可以将数据从在线的SpreadJS导出为Excel文件,或者将Excel文件导入到SpreadJS中进行在线预览。

那些经常使用SpreadJS进行Excel文件导入导出操作的用户对于gc.spread.Excelio这个包并不陌生,它是我们导出Excel文件的核心依赖。如果没有它,就无法实现对Excel文件的导入导出。

这个依赖的上架可以追溯到SpreadJS V9.0版本。在此之前,SpreadJS的Excel导入/导出功能要求将其安装在网络服务器上。用户想要导出Excel文件就必须依赖后端,这对于网络延迟和开发成本都有一定的负担。因此,在V9.0版本中,我们将导入导出Excel文件的功能作为一个组件,并提供公共接口以方便用户调用。

告别ExcelIO

使用ExcelIO的用户都知道,要将在线文件导出为Excel文件,首先需要创建ExcelIO的实例,然后使用ExcelIO的save方法将在线文件导出为SSJSON格式,最后使用FileSaver库的saveAs方法将SSJSON数据保存为Excel文件。代码如下:

var ExcelIO = new GC.Spread.Excel.IO();
ExcelIO.save(SSJSON, function (b) {
    window.saveAs(b, "导出.XLSX");
}, function (e) {
    console.log("导出失败");
});

随着越来越多的用户使用SpreadJS,我们收到了越来越多的使用大数据量和复杂格式文件的案例。这些大数据量的文件给产品的性能带来了新的挑战。如何提升性能成为决定用户在处理大数据量文件导入导出时体验的关键。因此,在SpreadJS V16.0正式发布后,我们推出了全新的文件结构——SJS。**这种新的结构不仅大幅减少了文档的体积,而且平均提升了导入导出性能高达50%。**这为未来涉及金融行业和协同编辑等大数据量场景下对低延迟性能的要求提供了架构级的基础支持。而对于之前为了解决前端导入导出需求而推出的ExcelIO,则到了告别的时候了。

拥抱新IO

为了应对未来ExcelIO在导入导出性能方面所面临的挑战,我们在SpreadJS v16.0版本中正式采用了一种新的文件格式来解决这个问题。这种新的.SJS格式是一个压缩文件,它包含了多个较小的JSON文件,类似于Excel的XML结构。

这种新的文件结构能够支持大型Excel文件,并将它们导出为体积更小的文件。此外,如果一个Excel文件中有许多工作表,您可以通过按需加载工作表的方式实现快速加载。为了使用这种新的文件格式,您无需再导入ExcelIO模块,而是只需导入IO插件即可:

"@grapecity/spread-sheets-io": "^16.2.4",

此时,可能会有一些用户会有疑问,即我们推出了SJS文件格式后是否不再支持之前的Excel的XLSX文件格式。答案是否定的。需要注意的是,新的SJS文件格式是可选的,您仍然可以选择使用.SSJSON格式或XLSX格式的文件。但是,如果您希望获得更小的文件体积和更快的性能,我们建议您使用.SJS文件格式。SJS格式和非SJS格式文件的导入导出方法也有所不同,前者使用open和save方法,后者使用import和export方法。代码如下:

export default {
  name: "App",
  data: function () {
    return {
      spread: null,
      selectedFile: null
    };
  },
  methods: {
    spreadInitHandle(value) {
      this.spread = value;
    },
    handleFileUpload(e) {
      this.selectedFile = e.target.files[0];
    },
    uploadFile() {
      let spread = this.spread
      // 使用FormData对象来构建文件上传请求
      let formData = new FormData();
      formData.append('file', this.selectedFile);

      // 解析文件名和文件类型
      const fileName = this.selectedFile.name;
      const fileExtension = fileName.split('.').pop();
      if (fileExtension == "sjs") {
        spread.open(this.selectedFile, function () { }, function () { });
      } else {
        spread.import(this.selectedFile, function () { }, function () { });
      }
    },

    saveExcel() {
      let spread = this.spread
      console.log(spread);
      spread.export(function (blob) { saveAs(blob, "test.xlsx"); }, function () { });
    },
    saveSJS() {
      let spread = this.spread
      spread.save(function (blob) { saveAs(blob, "test.sjs"); }, function () { });
    },
    saveSSJSON() {
      let spread = this.spread
      console.log(spread.toJSON());
    }
  },
};

相关文档参考:

SpreadJS文件导入导出示例

open方法API

save方法API

import方法API

export方法API

新的IO新的变化

性能提升

新的文件格式的引入让SpreadJS在导入和导出方面具备了更高的性能和更小的文件体积。之前的导出方式是先将数据导出为SSJSON,然后再转换为Excel模型,而现在借助新的文件格式,数据直接被添加到一个压缩的.SJS文件中,这个文件包含了一些较小的SSJSON文件,类似于Excel XML结构。

在过去,ExcelIO Import和Export的实质是通过特殊的JSON和Excel模型转换为Excel XML。通过采用这种新的格式,SpreadJS将被转换为.SJS,这是一种类似于Excel XML的特殊JSON模式,因此可以直接进行转换操作。

image

以下是比较 .SSJSON 和 .SJS 示例文件的一些性能数据:

image

除了时间改进外,新文件格式还包括文件大小改进:

image

image

更多导入导出选项

在保存或打开新的 SJS 文件时,这种新文件类型有几个不同的选项可供选择。这些包括:

导出选项

- includeBindingSource 是否包含绑定源

- includeStyles 是否包含样式

- includeFormulas 是否包含公式

- saveAsView 是否忽略格式字符串

- includeAutoMergedCells 是否包括自动合并的单元格

- includeCalcModelCache 是否包括计算引擎缓存

- includeUnusedNames 是否包括未被使用的命名信息

- includeEmptyRegionCells 是否包括空白区域

导入选项

- includeStyles 转换时是否包含样式

- includeFormulas 转换时是否包含公式

- fullRecalc 转换后是否执行计算引擎重算

- dynamicReferences 转换时是否以动态引用模式执行计算

- calcOnDemand 转换后是否按需计算公式

- includeUnusedStyles 转换时是否包括未被使用的命名信息

- openMode 导入模式

- Normal - 打开文件时,可以刷新UI和UI事件,会在特定时间点响应.

- Lazy - 打开文件时,只直接加载活动的工作表,其他工作表只有在使用时才加载.

- Incremental - 打开文件时,可以刷新UI和UI事件,并会立即响应.

还有用于导入和导出不同文件类型选项的特定选项:

- ImportXlsxOptions 导入XLSX文件选项

- ImportSSJsonOptions 导入SSJSON文件选项

- ImportCsvOptions 导入Csv文件选项

- ExportXlsxOptions 导出XLSX文件选项

- ExportSSJsonOptions 导出SSJSON文件选项

- ExportCsvOptions 导出Csv文件选项

作者: Richard.Huang | 审核:Clark.Pan | 更新时间:2023.11.06