17.1.0 设置默认字体后表头还是微软雅黑
一个空白的模版用sheet.getRange(-1, -1, -1, -1).font('11pt 微软雅黑') 设置默认字体为微软雅黑,但是用setDataSource设置数据或是插入透视表,表头都不是微软雅黑 而是原先默认的字体。这个问题在17.1.0版本出现,17.0.10及之前版本没法这个问题本帖最后由 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, 并不是“微软雅黑”,需要你提供一下复现问题的明确步骤
新建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]