找回密码
 立即注册

QQ登录

只需一步,快速开始

tutu

注册会员

24

主题

64

帖子

182

积分

注册会员

积分
182
tutu
注册会员   /  发表于:2020-12-10 16:11  /   查看:2082  /  回复:3
1金币
您好
在项目中我这边遇到一个这样的问题,spread里面的各个sheet样式是对的,但是导出为xlsx格式,用表格编辑器打开出现样式混乱,麻烦你们那边看一下这个问题咋个解决吧,谢谢!



导出xlsx问题demo.rar

2.74 MB, 下载次数: 26

最佳答案

查看完整内容

出现此问题,是因为两个工作表具有不同的样式“ _builtInStyle51”,“ _ builtInStyle52”,并且在ExcelIO中sheet2在sheet1中使用相同的名称样式。这需要一定的时间修复。 这边给您提供一个绕开此问题的方法

3 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-10 16:11:06
来自 4#
tutu 发表于 2021-2-2 10:54
您好,想问一下,您们这个问题啥时候能解决

出现此问题,是因为两个工作表具有不同的样式“ _builtInStyle51”,“ _ builtInStyle52”,并且在ExcelIO中sheet2在sheet1中使用相同的名称样式。这需要一定的时间修复。

这边给您提供一个绕开此问题的方法
  1. sheet1 = spread.sheets[0];
  2. sheet2 = spread.sheets[1];
  3. var renamedStyles = {};
  4. var styles = sheet2.getNamedStyles();
  5. spread.suspendPaint();

  6. //Clone & rename the same name styles.
  7. for (var i=0; i<styles.length; i++) {
  8.     var style = styles[i];
  9.     if (sheet1.getNamedStyle(style.name)) {
  10.         style = style.clone();
  11.         renamedStyles[style.name] = 1;
  12.         style.name = "sheet2" + style.name;
  13.         sheet2.addNamedStyle(style);
  14.     }
  15. }

  16. //Change the usage.
  17. var r = sheet2.getRowCount();
  18. var c = sheet2.getColumnCount();
  19. for (var i=0; i<r; i++) {
  20.     var style = sheet2.getStyle(i, -1);
  21.     if (renamedStyles[style] || renamedStyles[style&&style.name]) {
  22.         sheet2.setStyle(i, -1, "sheet2" + style.name);
  23.     }
  24.     for (var j=0; j<c; j++) {
  25.         var style = sheet2.getStyle(i, j);
  26.         if (renamedStyles[style] || renamedStyles[style&&style.name]) {
  27.             sheet2.setStyle(i, j, "sheet2" + style.name);        }
  28.     }
  29. }
  30. for (var j=0; j<c; j++) {
  31.     var style = sheet2.getStyle(-1, j);
  32.     if (renamedStyles[style] || renamedStyles[style&&style.name]) {
  33.         sheet2.setStyle(-1, j, "sheet2" + style.name);    }
  34. }

  35. //Delete the duplicated styles
  36. var s = Object.keys(renamedStyles);
  37. for (var i = 0; i<s.length; i++) {
  38.     sheet2.removeNamedStyle(s[i]);}
  39. spread.resumePaint();
复制代码


回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-10 16:55:23
2#
本帖最后由 DerrickJiao 于 2020-12-10 17:07 编辑

您好,问题已复现,我们会做进一步调研,有进展将在本帖更新,此贴为您改为保留处理。(SJS-6823)
回复 使用道具 举报
tutu
注册会员   /  发表于:2021-2-2 10:54:30
3#
您好,想问一下,您们这个问题啥时候能解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部