找回密码
 立即注册

QQ登录

只需一步,快速开始

bigsun008
金牌服务用户   /  发表于:2024-7-2 09:43  /   查看:683  /  回复:2
一个空白的模版用sheet.getRange(-1, -1, -1, -1).font('11pt 微软雅黑') 设置默认字体为微软雅黑,但是用setDataSource设置数据或是插入透视表,表头都不是微软雅黑 而是原先默认的字体。这个问题在17.1.0版本出现,17.0.10及之前版本没法这个问题

默认微软雅黑.sjs

3.02 KB, 下载次数: 159

表头不是微软雅黑.sjs

4.34 KB, 下载次数: 163

2 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-2 18:24:42
沙发
本帖最后由 Richard.Ma 于 2024-7-2 18:26 编辑


没有测试出你说的差异

使用你提供的这个“表头不是微软雅黑.sjs”文件,在17.1或者17.0.10测试结果是一样的

另外,我按照你说的步骤在17.0.10测试了一下
1.空sheet代码设置sheet.getRange(-1, -1, -1, -1).font('11pt 微软雅黑')
2.添加table

得到的结果如下图,同样table表头是calilbri, 并不是“微软雅黑”,需要你提供一下复现问题的明确步骤

image.png415964049.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-8-23 10:27:43
板凳
新建table字体是calibri的问题,目前调查的结论是产品设计如此,也是由于历史原因造成的。

在 v17 之前,字体信息是包含在一个字符串中,您不能只在样式上设置一个字体属性,例如

style.fontWeight = “bold”

如果您想将“粗体”应用于一种字体,您还必须生成其他字体属性。例如“15px bold Calibri”,以生成有效的字体字符串。

此策略使得定义了字体属性的样式始终具有完整的字体字符串(类似表格主题样式),因此,在所有表格主题字体中,headerRowStyle 的字体都可能包含“14px bold Calibri”。

副作用是,一旦表格行标题有了字体,它比列样式字体具有更高的优先级,所以现在显示的是table主题中对应的标题行样式字体

考虑到外观和与旧版本的数据兼容性,我们不能简单地改变内置样式,这可能会破坏其他客户现有的模板设计。

如果要实现和excel相同的效果的话,可以通过下面的代码来解决,初始化的时候执行下面的代码就行

  1. var designer = new GC.Spread.Sheets.Designer.Designer('dss');
  2. var spread = designer.getWorkbook();
  3. Object.keys(GC.Spread.Sheets.Tables.TableThemes).forEach((name) => {
  4.     var theme = GC.Spread.Sheets.Tables.TableThemes[name];
  5.     var headerRowStyle = theme.headerRowStyle();
  6.     if(headerRowStyle){
  7.         headerRowStyle.fontFamily = undefined;
  8.     }
  9. });
复制代码

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