找回密码
 立即注册

QQ登录

只需一步,快速开始

Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-21 13:53:04
25#
SpreadJS本身维护了一个大型的注册字体映射(425种),其中包含很多字体,所以通常不需要自己注册字体。

在这个问题中,“sans-serif”实际上不是合法字体,因此它不包含在映射中,所以需要进行注册。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-21 12:12:49
24#
这边确认一下,有进展我会在本帖中回复您。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-3-20 18:57:14
23#

你好,我这边还有个问题,我们注册的字体不止 sans-serif,  是需要对注册的字体都做上述注册吗

image.png823861694.png



回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-19 10:51:34
22#
好的。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-3-19 10:18:44
21#
Joestar.Xu 发表于 2024-3-18 17:28
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。

你好,我这边还未测试,稍后我修改后测试试一下,再来反馈
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-18 17:28:20
20#
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-15 14:11:09
19#
您可以直接参考下文中的代码,然后导入Excel文件,列宽将会是200px。

但实际上这并不是正确的方法,因为之前的模板文件中,列宽并不是200px:

1、如果想直接导入之前的模板文件,并且希望列宽为200px,则应该运行代码

GC.Spread.Excel.IO.registerMaxDigitWidth("sans-serif", 11, 9);

2、但实际上第三个参数 9 在Windows环境下是不正确的,应该是8。

因为通过Math.floor(72 / 8.38)计算,列宽为178px(在windows环境下打开模板文件,列宽显示为178px,导入Excel文件,SpreadJS的列宽应与Excel相同)。

3、列宽从200px变为178px是因为在导出Excel文件时,没有注册“sans-serif”的maxDigitWidth,浏览器自动计算出maxDigitWidth为9。

换句话说,您给出的Excel文件中的列宽计算并不正确。如果用户希望保证Excel文件和SpreadJS中的列宽保持一致,并且在导入和导出时不会改变,则应将“sans-serif”的maxDigitWidth注册为8,然后重新导出一个具有正确列宽的新 Excel 文件。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-15 14:06:09
18#
您好,由于导入和导出Excel文件时,列宽是基于默认字体的,所以如果想要导出再导入的列宽保持不变,应该将未知字体的maxDigitWidth信息注册到SpreadJS中。SpreadJS的版本并不重要。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-3-15 10:38:57
17#
Joestar.Xu 发表于 2024-3-14 16:37
您好,经调研,您的Excel文件的默认字体是“sans-serif”,不同的浏览器、不同的操作系统,甚至同一浏览器 ...

听起来在旧版和新版都需要调用registerMaxDigitWidth,

如果我只在新版做这个处理,是无法解决上述问题的吗?

因为用户使用我们的系统,编辑完excel 文件后,不一定会改,所以步骤2不一定会执行,若只有3和4这两部,能解决问题吗?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-5 11:21:00
15#
非常感谢,这边反馈一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部