我正在寻找可以将Excel列宽转换为Word表宽的公式。 示例:在excel中创建一个简单表,更改列的宽度。最后,将其复制/粘贴到MS Word文档中。
检查显示的两个文件。
MS Excel:
<x:cols>
<x:col min="1" max="1" width="3.77734375" customWidth="1" />
<x:col min="2" max="2" width="10.21875" customWidth="1" />
<x:col min="3" max="3" width="12.77734375" customWidth="1" />
</x:cols>
MS Word:
<w:tblGrid>
<w:gridCol w:w="454" />
<w:gridCol w:w="1100" />
<w:gridCol w:w="1380" />
</w:tblGrid>
请有人帮我或指导我正确的方向吗?
答案 0 :(得分:0)
单词的列宽存储为点的二十分之一。您可能会发现本文具有启发性,http://officeopenxml.com/WPtableGrid.php。
Excel不使用度量单位,因此充其量很难进行1:1转换。 Excel的宽度取决于所使用的字体大小。 Word不会这样做(除非将表属性设置为扩展以适合内容)。
从https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.column?view=openxml-2.8.1的width (Column Width)
以最大位数的字符数衡量的列宽 数字0、1、2,...,9的宽度,以常规样式的 字体。边距填充有4个像素(每侧两个),外加1 网格线的像素填充。
width =截断([{字符数} * {最大数字宽度} + {5 像素填充}] / {最大位数宽度} * 256)/ 256
[示例:以Calibri字体为例,最大位数 11点字体大小的宽度为7像素(在96 dpi时)。实际上,每个 数字与该字体的宽度相同。因此,如果像元宽度为 宽度为8个字符,此属性的值必须为 截断([8 * 7 + 5] / 7 * 256)/ 256 = 8.7109375。结束示例]
将文件中的width值转换为列宽 运行时的值(以像素表示),请使用以下计算:
=截断((((256 * {width} +截断(128 / {最大位数 宽度})/ 256)* {最大数字宽度})
[示例:使用与上述相同的示例,计算结果为 截断((((256 * 8.7109375 +截断(128/7))/ 256)* 7)= 61像素。结束 例子]
要从像素转换为字符宽度,请使用以下计算:
=截断(({pixels} -5)/ {Maximum Digit Width} * 100 + 0.5)/ 100
[示例:使用上面的示例,计算将为 截断((61-5)/7*100+0.5)/ 100 = 8个字符。结束示例]
[注意:应用宽边框时,左/右边框的一部分 必须与两侧的2个像素填充重叠。宽广的边界 不影响列的宽度计算。结束语]
[注意:当工作表处于查看公式而不是查看公式的模式时 值,列的像素宽度加倍。结束语]
此属性的可能值由W3C XML定义 模式double数据类型。
以下http://polymathprogrammer.com/2010/01/18/calculating-column-widths-in-excel-open-xml/可能也很有用,它提供了用于执行上面第一个方程式中的计算的代码。