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

QQ登录

只需一步,快速开始

jyjc 讲师达人认证
高级会员   /  发表于:2021-1-11 11:16  /   查看:2542  /  回复:9
关于在使用你们的SpreadJS控件时,现有关于使用 excelIo的问题.

使用前端进行导出时,通过读取后台返回的Excel 字符串,使用excelIo.save进行导出到客户端保存方法时候,遇到了导出的Excel文件部分sheet展示样式不一致问题。

通过对下面代码中的spResultJson 进行了断点跟踪,打印出来的内容见附件中的JSON文件 BudgetData.json文件。



部分代码如下:
var spResultJson = spCommon.unzipJSON(data);

                //为了显示+-折叠,需要在页面渲染
                var curSpread = new window.GC.Spread.Sheets.Workbook($("#combinedProjScheRegion")[0]);
                curSpread.fromJSON(spResultJson);
                var resultJson = curSpread.toJSON();

                excelIo.save(resultJson, function (blob) {
                    window.saveAs(blob, excelName);

                }



问题现象:
对比如下两图,图一为 本地部署预览图,使用的数据为BudgetData.json文件。
图二为导出的实际图效果,在"融资"sheet页中出现了 % 百分号格式

image.png12900389.png
image.png316686095.png


BudgetData.json

2.63 MB, 阅读权限: 1, 下载次数: 40

9 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-11 11:27:27
沙发
您好,请问有问题的表达如何生成的呢?是否有设置一些特殊的格式。
回复 使用道具 举报
jyjc讲师达人认证
高级会员   /  发表于:2021-1-11 11:35:43
板凳
@DerrickJiao
可以查看下附件中的 BudgetData.json文件,该文件就是后台返回的Excel JSON文件,在本地预览效果与保存效果不一致。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-11 11:42:02
地板
jyjc 发表于 2021-1-11 11:35
@DerrickJiao
可以查看下附件中的 BudgetData.json文件,该文件就是后台返回的Excel JSON文件,在本地预 ...

问题已复现,我们会做进一步调研,此贴为您改为保留处理,有进展会在本帖更新。
回复 使用道具 举报
jyjc讲师达人认证
高级会员   /  发表于:2021-1-11 11:45:25
5#
没有设置特殊格式,并且只有"融资" 这个sheet页才会出现该问题。
“融资一期”和“融资二期”都是相同的格式。
导出来的Excel见附件。

主数据项目202012231533.xlsx

187.05 KB, 下载次数: 41

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-11 11:50:40
6#
本帖最后由 DerrickJiao 于 2021-1-11 17:55 编辑
jyjc 发表于 2021-1-11 11:45
没有设置特殊格式,并且只有"融资" 这个sheet页才会出现该问题。
“融资一期”和“融资二期”都是相同的格 ...

收到,这边会做进一步的调研,有进展会第一时间告知您(SJS-7195)
回复 使用道具 举报
jyjc讲师达人认证
高级会员   /  发表于:2021-1-12 14:17:53
7#
DerrickJiao 发表于 2021-1-11 11:50
收到,这边会做进一步的调研,有进展会第一时间告知您(SJS-7195)

那这个是什么问题,什么时候能好呢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-12 14:23:38
8#
jyjc 发表于 2021-1-12 14:17
那这个是什么问题,什么时候能好呢

目前问题还在积极调研中,有进展会第一时间在本帖更新,已是高优先级在处理您的问题
回复 使用道具 举报
jyjc讲师达人认证
高级会员   /  发表于:2021-1-15 14:06:10
9#
一个星期了  有进展没
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-15 14:33:33
10#
jyjc 发表于 2021-1-15 14:06
一个星期了  有进展没

经调研,这边发现应用于表格的namedStyle是重复的,您可以使用以下代码更正其用法。
  1. spread.suspendPaint();
  2.             var sheet = spread.getSheetFromName(“融资”);
  3.             var namedStyles = sheet.getNamedStyles();
  4.             var replaceStyleKey = {};
  5.             namedStyles.forEach(function(style){
  6.                 sheet.removeNamedStyle(style.name);
  7.                 var newName = “融资_” + style.name;
  8.                 replaceStyleKey [style.name] = style.name = newName;
  9.                 sheet.addNamedStyle(style);
  10.             });
  11.             var r = sheet.getRowCount(),c = sheet.getColumnCount();
  12.             for(var i = 0; i <r; i ++){
  13.                  for(var j = 0; j <c; j ++){
  14.                      var needUpdatedName = replaceStyleKey [sheet.getStyleName(i,j)]]
  15.                      if(needUpdatedName){
  16.                         sheet.setStyleName(i,j,needUpdatedName);
  17.                     }
  18.                 }
  19.             }
  20.             spread.resumePaint();
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部