找回密码
 立即注册

QQ登录

只需一步,快速开始

innerwang

中级会员

64

主题

266

帖子

668

积分

中级会员

积分
668
innerwang
中级会员   /  发表于:2024-2-29 10:04  /   查看:3696  /  回复:34
1金币
本帖最后由 Richard.Huang 于 2024-3-18 15:40 编辑

产品:SpreadJS
版本:V17.0.3
调研编号:SJS-23044

之前提过每次通过excelIO保存后导出,再导入,列宽会减少的问题 https://gcdn.grapecity.com.cn/showtopic-201476-1-1.html
但是发现了导入时(尤其是旧文件)在不同浏览器的差异
在 16.2.4 版本的 Designer 上,将某列列宽设置为200, 然后通过 ExcelIO 导出。
image.png709024352.png

在 17.0.4 版本的 Designer 上, 通过 excelIO 导入该文件
* 在Chrome 浏览器中,列宽为200
* 在 Firefox 浏览器中,列宽为178
image.png934378662.png

html-demo.zip (6.25 MB, 下载次数: 204)

34 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-28 14:11:45
35#
好的,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-3-28 14:04:51
34#
Joestar.Xu 发表于 2024-3-28 13:59
您好,您可以参考一下30楼用户的回复来计算注册字体的宽度。

收到,之前看漏了回复,可以结贴了,谢谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-28 13:59:57
33#
您好,您可以参考一下30楼用户的回复来计算注册字体的宽度。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-3-28 11:28:45
32#
Joestar.Xu 发表于 2024-3-28 09:58
您好,经调研,对于列表中没有的字体,我们将使用span测量字体来计算maxDigitWidth。通常情况下,我们的 ...

那注册字体的宽度如何定义呢?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-28 09:58:55
31#

您好,经调研,对于列表中没有的字体,我们将使用span测量字体来计算maxDigitWidth。通常情况下,我们的计算结果是正确的,您不需要手动注册字体。

但是对于以下几种情况,可能会导致计算错误:

1、指定的字体是非法的css字体。

2、浏览器找不到指定的字体。

3、指定的字体在浏览器中渲染结果与Excel不同。

对于计算结果错误的情况(会影响导入导出的列宽),则需要手动测量maxDigitWidth,并使用registerMaxDigitWidth来注册字体。
回复 使用道具 举报
TheCoder
注册会员   /  发表于:2024-3-27 18:04:35
30#
本帖最后由 TheCoder 于 2024-3-27 18:14 编辑

这位朋友
在 Excel 中,列宽是按照最大数字字符宽度(使用Normal Style中指定的font去渲染数字0-9,渲染出来的宽度的最大值)为单位的。要计算 Excel 的列宽(以像素为单位)就得知道
最大数字字符宽度是多少,不同的字体和字号可能会有不同的最大字符宽度。
当导入导出Excel发现列宽不对时,可以通过一下步骤来测量指定字体和字号对应的最大数字字符宽度
1.确认您的屏幕文本设置为100%比例,如果不是请改为100%(在 Windows 中,比例设置位于“显示设置”面板中)。
image.png421795043.png
2.打开Excel文件,单击功能区上的字体设置(或快捷键ctrl+shift+f
image.png690504150.png
3.在字体设置对话框中,选中Normal font 复选框。
image.png936010131.png
4.Font:中的内容为Normal Style的字体,Size:中的内容为Normal Style的字号。
image.png920450744.png
5.例如要确定如图所示case中与“
image.png704673766.png 11pt”这个font对应的最大数字字符宽度,请在Excel文件中创建一个新工作表,在列的调整大小指示器上按鼠标左键,Excel将以字符数和像素为单位显示默认列宽。(8.11个字符(80pixel))
image.png501585998.png
结果: 所以“
image.png780476684.png 11pt”对应的最大数字字符宽度是Math.floor(80/8.11)。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-27 17:12:01
29#
您好,问题已收到,这边确认一下,有进展我会在本贴中回复您。
回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-3-27 14:17:01
28#
Joestar.Xu 发表于 2024-3-21 14:11
您好,请参考附件。

你好,我们这边的确是有些字体是不在fontList中的,对于这些不在列表中的字体,我注册宽度时都是注册为 8 就行吗?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-21 14:11:34
27#
您好,请参考附件。

fontList.txt

6.77 KB, 下载次数: 134

回复 使用道具 举报
innerwang
中级会员   /  发表于:2024-3-21 14:07:54
26#
Joestar.Xu 发表于 2024-3-21 13:53
SpreadJS本身维护了一个大型的注册字体映射(425种),其中包含很多字体,所以通常不需要自己注册字体。

...

那这个 425种字体映射是否可以提供一下,以供我们这边对比呢?
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部