找回密码
 立即注册

QQ登录

只需一步,快速开始

rex_chujie
金牌服务用户   /  发表于:2021-8-10 16:27  /   查看:2521  /  回复:5
本帖最后由 Clark.Pan 于 2021-8-24 16:57 编辑

如下图,excel打开下载的表格,会出现以下提示语,请问为什么会出现?如何不让弹框出现
image.png215625609.png
image.png449499816.png

下载.zip

4.64 MB, 下载次数: 51

评分

参与人数 1金币 +500 收起 理由
Clark.Pan + 500 感谢反馈产品问题

查看全部评分

5 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-24 16:59:40
推荐
rex_chujie 发表于 2021-8-24 16:46
你好,上述问题有眉目了吗?

表单里面包括116500命名样式,某些命名样式的名称不可读。
由于命名样式太多,很难检查是否使用了这些样式。

image.png803740234.png

因此,这边给您提供一个加载json后编的逻辑,删除了所有未使用的名称样式。
  1. var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  2.     window.onload = function () {
  3.         spread.fromJSON(this.eee);

  4.         removeUnusedNamedStyle(spread);
  5.     };

  6.     function removeUnusedNamedStyle(spread) {
  7.         spread.suspendPaint();
  8.         console.time("Remove Style");
  9.         for (var i = 0, len = spread.getSheetCount(); i < len; i++) {
  10.             var sheet = spread.getSheet(i);
  11.             var styleNameCache = {};
  12.             sheet.getNamedStyles().forEach(function (style) {
  13.                 styleNameCache[style.name] = true;
  14.             });
  15.             console.log(sheet.name(), "Original:", Object.keys(styleNameCache).length);
  16.             for (var r = 0; r < sheet.getRowCount(); r++) {
  17.                 for (var c = 0; c < sheet.getColumnCount(); c++) {
  18.                     var name = sheet.getStyleName(r, c), style = sheet.getStyle(r, c);
  19.                     if (typeof name === "string" && styleNameCache[name]) {
  20.                         delete styleNameCache[name];
  21.                     } else if (style.parentName && styleNameCache[style.parentName]) {
  22.                         delete styleNameCache[style.parentName];
  23.                     }
  24.                 }
  25.             }
  26.             console.log(sheet.name(), "Should Remove:", Object.keys(styleNameCache).length);
  27.             for (var nonUsedName in styleNameCache) {
  28.                 sheet.removeNamedStyle(nonUsedName);
  29.             }
  30.         }
  31.         console.timeEnd("Remove Style");
  32.         spread.resumePaint();
  33.     }

  34.     function aaa() {
  35.         const excelIo = new GC.Spread.Excel.IO();
  36.         const json = spread.toJSON();

  37.         excelIo.save(json, function (blob) {
  38.             saveAs(blob, "aaa.xlsx");
  39.         }, function (err) {
  40.             console.log(err);
  41.         });
  42.     }
复制代码


回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-10 16:51:28
沙发
问题已收到,我们需要做进一步调研,此贴为您改为保留处理,有进展会在本帖更新(SJS-9630)
回复 使用道具 举报
rex_chujie
金牌服务用户   /  发表于:2021-8-24 16:46:01
板凳
你好,上述问题有眉目了吗?
回复 使用道具 举报
rex_chujie
金牌服务用户   /  发表于:2021-8-24 17:45:18
5#
好的,非常感谢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-24 17:52:26
6#

不用客气,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部