找回密码
 立即注册

QQ登录

只需一步,快速开始

gnip

高级会员

139

主题

367

帖子

1176

积分

高级会员

积分
1176
gnip
高级会员   /  发表于:2024-9-30 16:43  /   查看:630  /  回复:11
本帖最后由 Ellia.Duan 于 2024-10-28 11:42 编辑

产品:SpreadJS
版本:17.1.7
调研编号:SJS-26733
Last Review:2024-10-17
当前进展:已在17.1.8版本修复



之前发了一篇帖子名为
报表自定义单元格后导出单元格文本不对】,按照下面所给的解决方案,但是我本地测试,spreadjs内部直接抛出错了
image.png958729858.png
以下是我导出的代码逻辑
image.png936161193.png
  1.     const spread = GC.Spread.Sheets.findControl(spreadDom.value)
  2.     spread.suspendPaint()
  3.     const sheetTabCount = spread.getSheetTabCount()
  4.     const dataMap = new Map()
  5.     for (let i = 0; i < sheetTabCount; i++) {
  6.       const sheetTab = spread.getSheetTab(i)
  7.       const usedRange = sheetTab.getRange()
  8.       dataMap.set(i, [])
  9.       const sheetMapItem = dataMap.get(i)
  10.       for (let i = 0; i < usedRange.rowCount; i++) {
  11.         const arr = []
  12.         for (let j = 0; j < usedRange.colCount; j++) {
  13.           let value = sheetTab.getValue(i, j)
  14.           value = typeof v === 'object' ? value.label : value
  15.           arr.push(value)
  16.         }
  17.         sheetMapItem.push(arr)
  18.       }
  19.     }
  20.     spread.resumePaint()
  21.     const temp = new GC.Spread.Sheets.Workbook()
  22.     await temp.fromJSON(spread.toJSON())

  23.     const t_sheetTabCount = spread.getSheetTabCount()

  24.     for (let i = 0; i < t_sheetTabCount; i++) {
  25.       const t_sheetTab = temp.getSheetTab(i)
  26.       const usedRange = t_sheetTab.getRange()

  27.       t_sheetTab.getSheet().setArray(usedRange.row, usedRange.col, dataMap.get(i))
  28.     }
  29.     console.log('dataMap.get(i)', temp)

  30.     temp.export(
  31.       (blob) => {
  32.         fileSaver.saveAs(
  33.           blob,
  34.           `${
  35.             typeof downloadFieldName === 'string'
  36.               ? downloadFieldName
  37.               : reportDetail.value.reportName
  38.           }.xlsx`
  39.         )

  40.         // 隐藏行头
  41.         setTimeout(() => {
  42.           resolveColAndRowHeader(false, temp)
  43.           sheetLoading.value = false
  44.         }, 200)
  45.         ElMessage({
  46.           message: '导出成功',
  47.           type: 'success'
  48.         })
  49.       },
  50.       null,
  51.       {
  52.         fileType: GC.Spread.Sheets.FileType.excel
  53.       }
  54.     )
复制代码


评分

参与人数 1金币 +300 收起 理由
Ellia.Duan + 300

查看全部评分

11 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-9-30 17:40:07
沙发
您好!从您提供的信息,看不出来问题所在,需要您提供一个能够复现问题的demo。如果不便提供demo,建议节后约个会议讨论下。
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-10-8 11:00:32
板凳
Wilson.Zhang 发表于 2024-9-30 17:40
您好!从您提供的信息,看不出来问题所在,需要您提供一个能够复现问题的demo。如果不便提供demo,建议节后 ...

复现测试文件已上传

test.zip

164.27 KB, 下载次数: 18

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-8 17:34:44
地板
gnip 发表于 2024-10-8 11:00
复现测试文件已上传

收到测试文件,测试后给您同步结论。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-10-11 10:17:57
5#
您好,可以修改以下内容:
image.png235384520.png
修改后,是可以成功导出的。


回复 使用道具 举报
gnip
高级会员   /  发表于:2024-10-11 10:39:06
6#
本帖最后由 gnip 于 2024-10-11 10:41 编辑
Ellia.Duan 发表于 2024-10-11 10:17
您好,可以修改以下内容:

修改后,是可以成功导出的。

image.png248194579.png 我这就是调用的接口,是个promise请求的函数,里面还有很多业务处理的逻辑,下面这样纯粹地址写法肯定不行的
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-10-11 11:17:22
7#
本帖最后由 Ellia.Duan 于 2024-10-11 13:42 编辑

收到,我将深入调研下此问题。如有进展,会及时联系您。SJS-26733
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-10-12 16:53:17
8#
此问题计划在下个版本修复,我将此贴移至bug反馈区。
同时,给您提供下bug修复前的临时解决方案:
  1. async exportExcel() {
  2.   const spread = GC.Spread.Sheets.findControl(this.spreadDom);
  3.   const worksheet = spread.getActiveSheetTab().toWorksheet();
  4.   const temp = new GC.Spread.Sheets.Workbook();
  5.   // --- can modify the worksheet data here. --- //
  6.   worksheet.setValue(0, 0, 'test');
  7.   // ------------------------------------------- //
  8.   temp.addSheet(0, worksheet);

  9.   temp.export(
  10.     function(blob) {
  11.       saveAs(blob, "1.xlsx");
  12.     },
  13.     e => {
  14.       console.log("失败", e.errorMessage);
  15.     }
  16.   );
  17. }
复制代码


回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-10-28 11:42:56
9#
关于导出报错的问题,已在17.1.8版本修复。
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-10-28 11:49:13
10#
Ellia.Duan 发表于 2024-10-28 11:42
关于导出报错的问题,已在17.1.8版本修复。

请问一下,你们版本发布记录在官方那里能查到呢,有链接不
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部