Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

Excel列宽像素值计算方法详解

字数不多,全是干货;
心血凝结,全网唯一;
如有帮助,请您点赞;
未经许可,禁止转载!

前两年基于Apache POI做了个Excel转Html的程序。为了让HTML中列宽的显示尺寸精确吻合Excel原生显示尺寸,做了大量的研究和试算,不同字号不同字体测试了N多种组合,最终完美还原了Excel列宽像素计算方法。今天有空,为了知识不被遗忘,写个博记录一下,全网独一份哦!

首先,要知道每个Excel文件都有一个缺省字体定义,包含了字体、字号信息。这个缺省字体是在Excel选项中指定的,当新建一个工作簿时就被作为内置属性在文件中固化下来。如下图所示:
Excel文件的默认字体
该字体的宽度被作为一个基本度量单位用于与列宽相关的计算。POI源码中涉及像素、缺省列宽的计算是大多是错误或者说不完善的,其中最主要的一点就是其对Excel的缺省字体宽度没有正确获取,在3.x版本中(4.x没看过)直接硬编码了一个数字8(好像是)作为字体宽度,且对单元格padding部分的处理不正确,因此后续相关的像素计算都得不到正确结果。我在做Excel转Html的过程中,不得不自行研究计算,最终能生成像素级一致的HTML,效果非常好。

下面开始讲解Excel是如何进行像素计算的。具体来说是这样的:

  • 对Excel来说默认字体有一个缺省宽度,其定义是0-9这10个字符中最宽的字符的像素值。以下,

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: Ambari2.7+HDP3.X集成Dolphinscheduler1.3

下一篇: 电容的去耦半径

精华推荐