找回密码
 立即注册

QQ登录

只需一步,快速开始

优米信息

金牌服务用户

5

主题

9

帖子

36

积分

金牌服务用户

积分
36
  • 132

    金币

  • 5

    主题

  • 9

    帖子

最新发帖
优米信息
金牌服务用户   /  发表于:2024-12-23 18:29  /   查看:91  /  回复:7
1金币
image.png36737975.png

最佳答案

查看完整内容

您好, 可以参考下面的属性:includeUnusedNames 1、导出sjs: 2、导出excel文件

7 个回复

倒序浏览
最佳答案
最佳答案
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-12-23 18:29:44
来自 8#
您好,
可以参考下面的属性:includeUnusedNames
1、导出sjs:
image.png635698852.png
  1. spread.save(function (blob) {
  2.                 saveAs(blob, fileName);
  3.                 console.timeEnd("导出时间")
  4.             }, e => {
  5.                 console.log('失败', e.errorMessage);
  6.             }), {
  7.                 includeBindingSource: false,//保存时是否包括绑定源,默认为false
  8.                 includeStyles: true,//保存时是否包括样式,默认为true
  9.                 includeFormulas: true,//保存时是否包括公式,默认为true
  10.                 saveAsView: false,//保存时是否应用格式字符串,默认为false
  11.                 includeAutoMergedCells: false,//保存时是否包括自动合并的单元格,默认为false
  12.                 includeCalcModelCache: false,//是否包括额外的计算数据。使用这些数据打开文件时可能会更快,默认为false
  13.                 includeUnusedNames: true,//保存时是否包含未使用的自定义名称,默认为true
  14.                 includeEmptyRegionCells: true,//是否在使用的数据范围之外包括任何空单元格(无数据的单元格或仅样式的单元格),默认为true
  15.                 saveR1C1Formula: false,//是否在文件中保存r1c1公式,仅适用于sjs文件类型,默认false
  16.             };
复制代码
2、导出excel文件
image.png626695556.png

  1.             spread.export(function (blob) {
  2.                     saveAs(blob, fileName);
  3.                     console.timeEnd("导出时间")
  4.                 }, e => {
  5.                     console.log('失败', e.errorMessage);
  6.                 }, {
  7.                     fileType: GC.Spread.Sheets.FileType.excel,
  8.                     includeBindingSource: false, // 将工作簿转换为json时是否包含绑定源,默认false
  9.                     includeStyles: true, // 工作簿转json时是否包含样式,默认true
  10.                     includeFormulas: true, // 工作簿转json时是否包含公式,默认true
  11.                     saveAsView: false, // 将工作簿转换为 json 时是否将格式字符串应用于导出值,默认 false
  12.                     rowHeadersAsFrozenColumns: false, // 将工作簿转换为 json 时是否将行标题视为冻结列,默认 false
  13.                     columnHeadersAsFrozenRows: false, // 将工作簿转换为 json 时是否将列标题视为冻结行,默认 false
  14.                     includeAutoMergedCells: false, // 工作簿转json时是否包含自动合并的单元格,默认false
  15.                     includeCalcModelCache: true, // 是否包含计算的额外数据。打开包含这些数据的文件时可以更快,默认 false。
  16.                     includeUnusedNames: false, //  保存时是否包含未使用的自定义名称,默认 true。

  17.                 }
  18.             );
复制代码


回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-24 08:54:42
2#
您好!SpreadJS支持多种导出文件,何不选择存储这种通用文件类型保存文件内容?请教下您的存储需求场景。
回复 使用道具 举报
优米信息
金牌服务用户   /  发表于:2024-12-24 09:11:34
3#
Wilson.Zhang 发表于 2024-12-24 08:54
您好!SpreadJS支持多种导出文件,何不选择存储这种通用文件类型保存文件内容?请教下您的存储需求场景。

采用toJSON的形式将Json字符串存入mysql数据库中,之后再查出来通过fromJson回显,单引号是数据库里面的关键字,无法直接执行sql语句进行存储,需要转义一下
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-24 12:01:44
4#
优米信息 发表于 2024-12-24 09:11
采用toJSON的形式将Json字符串存入mysql数据库中,之后再查出来通过fromJson回显,单引号是数据库里面的 ...

您设置的字体是西文字体,西文字体名称可能包含多个单词,单词之间由空格间隔。
在namedStyles属性中,font属性值包含了字体样式、字号、字体名称等信息,各部分之间由空格间隔。字体样式、字号等均由单个单词表示,中文字体名称各字符串之间不需要空格间隔。如果不使用单引号对包围西文字体名称,那么其中的空格间隔将和font属性值各成分之间空格混淆,不利于序列化和反序列化。这是正常设计。

不建议您修改json数据中的内容,会存在一定风险。可以考虑将toJSON得到的json字符串封装进文件存储,在数据库中存储文件对应的存储路径。
回复 使用道具 举报
优米信息
金牌服务用户   /  发表于:2024-12-25 12:02:20
5#
Wilson.Zhang 发表于 2024-12-24 12:01
您设置的字体是西文字体,西文字体名称可能包含多个单词,单词之间由空格间隔。
在namedStyles属性中,f ...

nameStyles属性是什么时候添加进去的,为什么fromJson导出来的数据显示nameStyles有90多条,这些样式是否是多余的,或者有什么方法我可以设置成宋体的样式,从而避免西文字体之间的空格
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-12-25 12:29:39
6#
本帖最后由 Ellia.Duan 于 2024-12-25 12:30 编辑

您好,关于您的问题,一一回答。
1、为什么fromJson导出来的数据显示nameStyles有90多条
nameStyles包括在SpreadJS中为工作簿,为sheet设置的自定义样式,还包括在excel中设置的样式,您可以通过nameStyles的name名称进行排查,看哪些单元格使用了这些样式。
2、如何避免多余的样式。
SpreadJS支持导出sjs ,excel的时候,可以选择是否包含未使用的名称,如下图所示。
image.png315326537.png

3、或者有什么方法我可以设置成宋体的样式
  1. spread.getNamedStyles().forEach(function (style) {
  2.             style._fontFamily= "宋体";
  3.     });
  4.     spread.sheets.forEach((sheet) => {
  5.       
  6.         sheet.getNamedStyles().forEach(function (style) {
  7.             style._fontFamily= "宋体";
  8.         })

  9. })
复制代码
可以参考上面的代码,按需对自定义样式设置fontFamily

回复 使用道具 举报
优米信息
金牌服务用户   /  发表于:2024-12-25 14:11:52
7#
Ellia.Duan 发表于 2024-12-25 12:29
您好,关于您的问题,一一回答。
1、为什么fromJson导出来的数据显示nameStyles有90多条
nameStyles包括 ...

(SpreadJS支持导出sjs ,excel的时候,可以选择是否包含未使用的名称, ) 这个有api可以调用吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部