我编写了一个使用OpenXML生成Excel文件的代码.下面是在Excel中生成列的代码.
Worksheet worksheet = new Worksheet();
Columns columns = new Columns();
int numCols = dt1.Columns.Count;
for (int col = 0; col < numCols; col++)
{
Column c = CreateColumnData((UInt32)col + 1, (UInt32)numCols + 1, 20.42578125D);
columns.Append(c);
}
worksheet.Append(columns);
Run Code Online (Sandbox Code Playgroud)
另外,我在下面尝试创建列.
Column c = new Column
{
Min = (UInt32Value)1U,
Max = (UInt32Value)1U,
Width = 25.42578125D,
BestFit = true,
CustomWidth = true
};
Run Code Online (Sandbox Code Playgroud)
我认为使用BestFit它应该工作.但它没有设置自动尺寸.
我试图计算Excel列的像素宽度,如在此后,使用从所述的OpenXML规范官方式.然而,为了应用该式中,我需要知道最大数字宽度的的普通字体,这是最宽的数字位的像素宽度.OpenXML规范给出了这个例子作为澄清:
以Calibri字体为例,11点字体大小的最大数字宽度为7像素(96 dpi).
我通过目视检查一个Calibri 11点数字检查这是正确的,它确实是7像素宽.所以,我正在尝试创建一个方法,它将返回任何字体/大小的最大数字宽度.
我已经按照这个问题提出的建议,但它没有产生我期望的结果.
这是我的测试代码:
var font = new Font("Calibri", 11.0f, FontStyle.Regular);
for (var i = 0; i < 10; i++)
{
Debug.WriteLine(TextRenderer.MeasureText(i.ToString(), font));
}
Run Code Online (Sandbox Code Playgroud)
这会报告所有数字的宽度均为15.
有什么建议吗?
蒂姆,谢谢