找回密码
 立即注册

QQ登录

只需一步,快速开始

innerwang

中级会员

90

主题

364

帖子

920

积分

中级会员

积分
920
innerwang
中级会员   /  发表于:2024-7-18 15:31  /   查看:1320  /  回复:5
1金币



步骤:
1. 初始化 在线表格设计器
2. 设置默认字体为 sans-serif  :   
  1. GC.Spread.Sheets.Themes.Office.bodyFont('sans-serif')
复制代码


3. 设置当前每个 sheet 的 theme 为 Theme 类型:
  1. workbook.sheets.forEach(s => {
  2.       s.currentTheme(GC.Spread.Sheets.Themes.Office)
  3.         })
复制代码
4.  通过excelIO 导出,在将工作簿转化为 json 后,打印 json 中每个 sheet 的 theme ,又变回了 'Office' 字符串, 但是此时该主题对应的 bodyFont 还是 sans-serif
image.png765068359.png
5.  再次导入导出的 excel 文件,发现 json 结构中 sheet 对应的 theme 此时不是字符串了,而是对象,但是 bodyFont 变为了  'Calibri'
image.png198223265.png


问题:
1. 为什么导出时,会将设置的 Theme 数据类型转化为字符串呢?
2. 为什么再次导入时,字体变为了 Calibri 而不是之前设置的 sans-serif 呢?

期望:
1. 在第一次设置了 Office 的 bodyFont 为 'sans-serif' 后,之后需要字体始终是  sans-serif
2. 当把  sheet 的 currentTheme 设置为 Theme 类型时,需要转化为 json 后也符合之前设置的 Theme 数据结构


对应的 demo 如下: designer-demo.zip (1.22 MB, 下载次数: 268)

最佳答案

查看完整内容

您好, 将步骤2和步骤3的JSON导出,您会发现Theme中没有包含任何关于sans-serif的数据。 所以实际上导出的时候也没有携带任何sans-serif的Theme信息,导入的时候是按照MS Excel中存储的数据导入的,因此打印的结果是Calibri。 Theme信息会占用较多的SSJSON空间,在之前的版本中为了尽可能减少SSJSON的大小和加快读取速度,Theme信息被隐藏在了代码中,而不是显示地存储在SSJSON中。 为了实现您的这个需求,您可以使用 ...

5 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-18 15:31:13
来自 2#
您好,

将步骤2和步骤3的JSON导出,您会发现Theme中没有包含任何关于sans-serif的数据。

所以实际上导出的时候也没有携带任何sans-serif的Theme信息,导入的时候是按照MS Excel中存储的数据导入的,因此打印的结果是Calibri。

Theme信息会占用较多的SSJSON空间,在之前的版本中为了尽可能减少SSJSON的大小和加快读取速度,Theme信息被隐藏在了代码中,而不是显示地存储在SSJSON中。

为了实现您的这个需求,您可以使用一个自定义Theme来实现,如下图:

image.png187588500.png

这样一来,导出后再导入,Theme的bodyFont仍旧为sans-serif了。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-7-19 14:09:24
3#
Joestar.Xu 发表于 2024-7-18 17:31
您好,

将步骤2和步骤3的JSON导出,您会发现Theme中没有包含任何关于sans-serif的数据。

我关注到这样实现是改了每个 sheet 的主题,在新建 sheet 时,我也需要在新建完后对新建的sheet 这样再处理一次吗?

有没有什么方式可以设置整个 workbook 的每个 sheet 的默认主题呢?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-19 17:36:33
4#
您好,这边查了一下相关的API,暂时没有找到可以为整个Workbook设置默认Theme的接口。

可以监听SheetTabClick,当sheetTabIndex为-1时,即表示新增,在此时设置Theme即可。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-7-25 09:50:34
5#
Joestar.Xu 发表于 2024-7-19 17:36
您好,这边查了一下相关的API,暂时没有找到可以为整个Workbook设置默认Theme的接口。

可以监听SheetTab ...

好的,谢谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-25 13:34:30
6#
不客气,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部