请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

大Vi

高级会员

189

主题

415

帖子

1326

积分

高级会员

积分
1326
大Vi
高级会员   /  发表于:2025-4-9 09:19  /   查看:102  /  回复:1
1金币
  1. function exportExcel(spread, fileName) {
  2.     if (fileName.substr(-5, 5) !== '.xlsx') {
  3.         fileName += '.xlsx';
  4.     }
  5.     let obj = cloneDeep(spread.toJSON({
  6.             includeBindingSource: true,
  7.             columnHeadersAsFrozenRows: true
  8.             // ignoreFormula:false,
  9.             // ignoreStyle:false,
  10.             // rowHeadersAsFrozenColumns:false
  11.         })),
  12.         { sheets } = obj

  13.     Object.keys(sheets).forEach(x => {
  14.         sheets[x].isProtected = false
  15.     })
  16.     console.log(obj, spread.toJSON(), spread)
  17.     let spreadJSON = JSON.stringify(obj)

  18.     spreadJSON.export(function (blob) {
  19.         saveAs(blob, fileName);
  20.     }, function (e) {
  21.         console.error('导出失败:', e);
  22.     }, {
  23.         fileType: GC.Spread.Sheets.FileType.excel,
  24.         //includeBindingSource: true
  25.     });
  26. }
复制代码
我需要在导出前对导出文件做一些额外的处理,但是又不能影响系统页面的spread,所以单独拷贝了一份obj,那怎么让obj对象转回spread那样的格式然后执行export呢?

image.png481101989.png

最佳答案

查看完整内容

您好,您可以新建一个workbook实例,并通过新建的实例进行执行export: 这样就可以既不修改当前页面的Spread实例,同时让导出的内容按照您的意愿改变。

1 个回复

倒序浏览
最佳答案
最佳答案
Matthew.Xue
超级版主   /  发表于:2025-4-9 09:19:02
来自 2#
本帖最后由 Matthew.Xue 于 2025-4-9 14:18 编辑

您好,您可以新建一个workbook实例,并通过新建的实例进行执行export:
  1. let tempSpread = new GC.Spread.Sheets.Workbook()
  2. tempSpread.fromJSON(JSON.parse(JSON.stringify(spread.toJSON())))
  3. // 直接调用api,修改tempSpread的属性
  4. tempSpread.sheets.forEach(s => {
  5.     s.options.isProtected = true
  6. })
  7. tempSpread.export()
复制代码
这样就可以既不修改当前页面的Spread实例,同时让导出的内容按照您的意愿改变。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部