bigsun008 发表于 2024-7-2 09:43:48

17.1.0 设置默认字体后表头还是微软雅黑

一个空白的模版用sheet.getRange(-1, -1, -1, -1).font('11pt 微软雅黑') 设置默认字体为微软雅黑,但是用setDataSource设置数据或是插入透视表,表头都不是微软雅黑 而是原先默认的字体。这个问题在17.1.0版本出现,17.0.10及之前版本没法这个问题

Richard.Ma 发表于 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, 并不是“微软雅黑”,需要你提供一下复现问题的明确步骤

Richard.Ma 发表于 2024-8-23 10:27:43

新建table字体是calibri的问题,目前调查的结论是产品设计如此,也是由于历史原因造成的。

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

style.fontWeight = “bold”

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

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

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

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

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

var designer = new GC.Spread.Sheets.Designer.Designer('dss');
var spread = designer.getWorkbook();
Object.keys(GC.Spread.Sheets.Tables.TableThemes).forEach((name) => {
    var theme = GC.Spread.Sheets.Tables.TableThemes;
    var headerRowStyle = theme.headerRowStyle();
    if(headerRowStyle){
      headerRowStyle.fontFamily = undefined;
    }
});
页: [1]
查看完整版本: 17.1.0 设置默认字体后表头还是微软雅黑