请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Richard.Ma 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-2 18:04  /   查看:189  /  回复:0
本帖最后由 Richard.Ma 于 2022-8-2 18:05 编辑

背景:客户在Excel中创建的xlsx文件,单元格字体显示为宋体,但是在spreadjs中加载后字体变成了Calibri Light, 通过spreadjs的font接口,获取到的也是Cambria

上述差异的原因在于“主题字体”,SpreadJS目前和英文版本的Excel的默认主题字体一致,而和中文版本的Excel有所差异导致



这篇文章会简单介绍“主题字体" 相关知识,以及在SpreadJS设置主题字体的办法

主题字体是什么?

主题字体是excel中主题的一部分,它定义了单元格在未设置任何字体的情况下,默认用来显示的字体,下图是中文版本excel中主题字体的设置菜单

可以看到当前默认主题字体为office: 等线 Light / 等线,这里的"等线 Light" 和 " 等线"两个字体分别是用于标题字体和正文字体

如下图2,单元格默认情况下是正文,应用的是正文字体。如果设置为了标题,那么应用的就是标题字体

image.png627058105.png

image.png836732177.png


SpreadJS中的主题字体

SpreadJS中,目前和英文版本的Excel的默认主题字体一致,标题字体和正文字体分别为:"Calibri Light" 和 "Calibri"
因此,如果将中文版Excel或者wps生成的xlsx文件加载到SpreadJS中,在未设置字体的单元格中,会发现显示的字体变成了上述字体

解决办法是设置为和中文版excel相同的字体即可,具体的设置代码如下:

获取和设置主题字体

获取主题字体
  1. var headerfont=sheet.currentTheme().headerFontFont();
  2. var bodyfont=sheet.currentTheme().bodyFont();
复制代码


设置主题字体,例如都设置为宋体
  1. var headerfont=sheet.currentTheme().headerFontFont('SimSun');
  2. var bodyfont=sheet.currentTheme().bodyFont('SimSun');
复制代码






0 个回复

您需要登录后才可以回帖 登录 | 立即注册