EXCEL的高度和宽度计算-文档值到像素

经过笔者多次查阅、验证,笔者认为官方文档在计算列款存在误导,实际使用与文档不一致,详见第三部分,欢迎大家来指正本文在宽度计算的问题,谢谢。

一、高度计算

EXCEL的高度在文档记录是以磅为单位的,sheetFormatPr类的defaultRowHeight是默认行高以磅为单位大小。
MAC WPS默认值:17.6磅 ( 默认字体:宋体 大小12磅), Windos WPS值:13.5磅 (默认字体:宋体 大小11磅)。
换算公式为:72磅=1英寸,1英寸=2.54厘米。
那么1磅=1/72英寸,而1英寸所含有PPI个像素,这里就不详细展开PPI的计算了,现在一般计算机默认为96,详细的计算可以自己百度。

   因此磅到像素的转换为 :  PX=(PT/72*PPI)      (公式-1) 其中PX为像素 PT为磅
      厘米到像素的转换为: PX= (mm/2.54*PPI) (公式-2) 其中PX为像素 mm为厘米
  1. WINDOWS WPS计算 默认字体:宋体 大小11磅

        高度为13.5磅的像素为   px=13.5/72*96 =18.00 
        高度为0.48厘米的像素为 px=0.48/2.54*96 =18.14
    

    在WPS的若某行存在与默认不一样的高度时,在某行类的属性上ht就存在磅值,其计算方式与默认磅值相同。
    此处的厘米数为wps上展示的,下同,和上述计算对比使用,有兴趣的同学可以根据宏获取磅值,再算像素

  2. MAC WPS计算 默认字体:宋体 大小12磅

          高度为17.6磅的像素为    px=17.6/72*96 =23.46     
          高度为0.62厘米的像素为 px=0.62/2.54*96 =23.43 
    

二、宽度计算

宽度值到像素的转换为 : PX=(width*8) (公式-3) 其中PX为像素 width为 defaultColWidth或列的值。

  1. WINDOWS WPS计算 默认字体:宋体 大小11磅 defaultColWidth值:9

            宽度width为9的像素为               px=9*8 =72.00                
            宽度为1.9厘米的像素为              px=1.9/2.54*96 =71.81   
         同样设置,在col上设置列宽时:
            宽度width为22.375的像素为       px=22.375*8 =179                
            宽度为4.74厘米的像素为            px=4.74/2.54*96 =179.14         
    
  2. MAC WPS计算 默认字体:宋体 大小12磅 defaultColWidth值:9.1428

             宽度为9.1428的像素为     px=9.1428*8 =73.14       
             宽度为1.79厘米的像素为  px=1.79/2.54*96 =67.65 
             宽度为1.93厘米的像 为  px=1.93/2.54*96 =72.94 (同样的设置在windows下)
    

    不知道WPS为何在MAC系统下计算的厘米数与WINDOWS下为何不同,难道是bug。
    不过73.14-67.65=5.49px(难道是2*padding+1gridlines)不计算在内,有懂WPS的人可以告诉笔者一下。当然对比两个系统下WPS还有其他差异,此处就不再一一描述来,总之研究WPS还是在WINDOWS下比较好(笔者被坑惨了,吐槽一下)。

三、宽度理论部分

  1. sheetFormatPr对象类的defaultColWidth属性

Default column width measured as the number of characters of the maximum digit width of the normal style’s font.
If the user has not set this manually, then it can be calculated:
defaultColWidth = baseColumnWidth + {margin padding (2 pixels on each side, totalling 4 pixels)} + {gridline (1pixel)}
If the user has set this manually, then there is no calculation, and simply a value is specified.
The possible values for this attribute are defined by the W3C XML Schema double datatype.
默认列宽度,以普通样式字体的最大数字宽度的字符数度量。
如果用户尚未手动设置此内容,则可以计算:
defaultColWidth = baseColumnWidth + {margin padding (2 pixels on each side, totalling 4 pixels)} + {gridline (1pixel)}
如果用户已手动设置此,则没有计算,并且只指定一个值。

  1. COl对象类的width (Column Width)属性

Column width measured as the number of characters of the maximum digit width of the numbers 0, 1, 2, …, 9 as rendered in the normal style’s font. There are 4 pixels of margin padding (two on each side), plus 1 pixel padding for the gridlines.
width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}256)/256
[Example: Using the Calibri font as an example, the maximum digit width of 11 point font size is 7 pixels (at 96 dpi). In fact, each digit is the same width for this font. Therefore, if the cell width is 8 characters wide, the value of this attribute must beTruncate([8
7+5]/7256)/256 = 8.7109375. end example]
To translate the value of width in the file into the column width value at runtime (expressed in terms of pixels), use this calculation:
=Truncate(((256 * {width} + Truncate(128/{Maximum Digit Width}))/256)
{Maximum Digit Width})
[Example: Using the same example as above, the calculation would be Truncate(((2568.7109375+Truncate(128/7))/256)7) = 61 pixels. end example]
To translate from pixels to character width, use this calculation:
=Truncate(({pixels}-5)/{Maximum Digit Width} * 100+0.5)/100
[Example: Using the example above, the calculation would be Truncate((61- 5)/7
100+0.5)/100 = 8 characters. end example]
[Note: when wide borders are applied, part of the left/right border must overlap with the 2 pixel padding on each side. Wide borders do not affect the width calculation of the column. end note]
[Note: When the sheet is in the mode to view formulas instead of values, the pixel width of the column is doubled. end note]
The possible values for this attribute are defined by the W3C XML Schema double datatype.
列宽度,以数字 0、1、…、9 的最大数字宽度的字符数度量,以普通样式的字体呈现。边距填充有 4 个像素(每侧两个),
加上网格线的 1 像素填充。
width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}256)/256 (公式-4)
示例:以 Calibri 字体为例,11 (pt)字体大小的最大数字宽度为 7 像素(在 96 dpi 时)。
因此,如果单元格宽度为 8 个字符宽,则此属性的值必须为
=Truncate([8
7+5]/7
256)/256 = 8.7109375
在运行时将文件中的宽度值转换为列宽度值(以像素表示),使用此计算:
=Truncate(((256 * {width} + Truncate(128/{Maximum Digit Width}))/256){Maximum Digit Width}) (公式-5)
[示例:使用与上述相同的示例,计算将为Truncate(((256
8.7109375+Truncate(128/7))/256)7) = 61 像素。
要从像素转换为字符宽度,请使用此计算:
Truncate(({pixels}-5)/{Maximum Digit Width} * 100+0.5)/100
[示例:使用上面的示例,计算将为Truncate((61- 5)/7
100+0.5)/100 = 8 个字符。

以上理论内容均是官方文档,在文档笔者发现在计算公式-4与常识有悖论的地方,假设默认8个字符宽度,那么将默认字符8,Maximum Digit Width为X导入上述 (公式-4 )

                   (8X+5)/256X=256width
                      =》 width =(8X+5)/ X    
                      =》 width =  8+5/X           (公式-5)

在公式-5中 5/x为一个反函数,超过5以后随着X-Maximum Digit Width的变大,宽度几乎保持不变?我们从实际的应用中可以知道数字的宽度随着字体的变大,宽度也变大, 这个从EXCEL的文档中就可以轻易证实。
这也是笔者没有使用官方的运算的方法的原因,根据这个公式怎么也计算不出想要的,这里也欢迎WPS/OFFICE的专家指正。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Excel 是一个非常强大的电子表格应用程序,它可以很方便地进行各种数学计算,包括计算太阳高度角。 我们可以利用 Excel 中的内置函数来计算太阳高度角。首先,我们需要知道日期、时间、地理位置和太阳方位角。这些值可以通过查阅日历和使用地图或 GPS 等工具来确定。 根据这些参数,我们可以使用下列方法计算太阳高度角: 1. 使用 Excel 中的相关函数确定日期和时间。 2. 通过经度和纬度计算出地球上的位置。 3. 查找日出和日落时间,并确定当前时间是否处于这个范围内。 4. 如果当前时间处于日出和日落时间之间,则可以使用基于经纬度和当前时间的太阳位置公式来计算太阳高度角。 5. 利用 Excel 中的函数来计算太阳高度角。 以下是一个示例代码,以确定当前日期和时间、纬度和经度(以度为单位)并计算太阳高度角为例: ``` =DEGREES(ASIN(SIN(RADIANS(SUN_ALTITUDE_SET(lat,lon,B2-DATE(1900,1,0),C2-TIME(0,0,0)))))) ``` 其中,lat 和 lon 分别是纬度和经度,而 B2 和 C2 则分别是日期和时间。函数 RADIANS 将角度从度转换为弧度,而函数 SUN_ALTITUDE_SET 则根据给定的参数计算太阳的高度角。 这个代码可以轻松地在一个 Excel 电子表格中使用,以方便地计算太阳高度角。 ### 回答2: Excel 是一款强大的电子表格软件,可以用来进行各种数据计算和统计。对于太阳高度角的计算,可以通过以下代码实现: 1. 首先需要明确计算太阳高度角所需的参数,包括: - 太阳高度角 H - 观测点纬度 φ - 太阳赤纬 δ - 当地标准时间 t - 当地标准子午线时 LST(以地球自转一周中的时间计算) 2. 确定公式 - 公式:cos H = sin δ * sin φ + cos δ * cos φ * cos (LST - t) - 加入单位换算,得到 H 单位为度数。 3. 在 Excel 中输入计算公式 - 在单元格中输入公式:=DEGREES(ACOS(SIN(RADIANS(delta))*SIN(RADIANS(latitude))+COS(RADIANS(delta))*COS(RADIANS(latitude))*COS(RADIANS(LST-hours)))) 其中: - delta 为太阳赤纬 - latitude 为所在地纬度 - LST 为当地标准子午线时,需要进行时区的转换 - hours 为格林威治时间与当地时区之间的时差(以小时为单位) 4. 计算结果 - 在相应单元格中输入计算公式后,点击回车即可得到计算结果,即太阳高度角 H。 通过以上的操作,我们可以轻松地在 Excel 中进行太阳高度角的计算。这样可以在需要进行数据分析、统计的时候,快速得出相关结果,便于我们更好地进行决策和规划。 ### 回答3: Excel太阳高度计算代码是用于计算太阳在地球表面上的高度角的代码。太阳高度角是指太阳光线水平面上的投影与地球表面朝向太阳的法线之间的夹角,其值范围为0°至90°,直接影响着太阳辐射的强度和方向。 在Excel中,我们可以通过内置函数ACOS、SIN、COS等来计算太阳高度角。具体实现步骤如下: 1. 首先,需要确定观测点的经纬度、日期和时间。 2. 通过日期和时间计算太阳在赤道上的位置角度RA和赤纬DEC。 3. 再通过观测点的经纬度和当前时间的时角,计算出太阳的方位角。 4. 最后,根据太阳方位角和高度角的计算公式,计算出太阳在地球表面上的高度角。 Excel太阳高度计算代码如下所示: =DEGREES(ASIN(SIN(RADIANS(DEC))*SIN(RADIANS(LAT))+COS(RADIANS(DEC))*COS(RADIANS(LAT))*COS(RADIANS(HA)))) 其中,DEC为太阳赤纬,LAT为观测点纬度,HA为当前时间的时角。 使用该公式即可计算出太阳在地球表面上的高度角,实现对太阳辐射的精确计算和预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值