我花了很多时间尝试使用OpenXML格式确定将.NET像素转换为Excel列宽的公式.我正在使用EPPlus生成xmls文档.我正在尝试确定要自动调整大小的列的宽度.我通过测量字符串然后尝试将其转换为OpenXML的列宽来获取像素数,这是用我认为的字符来衡量的.
我已经阅读了微软关于如何转换它的文档,并尝试了他们建议的公式,但它甚至不准确:
http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.column.aspx
这是我的代码使用他们的公式:
public double GetCharacterWidth(string Text, Font f, Graphics g)
{
float MaxDigitWidth = g.MeasureString("0", f).Width;
float Pixels = g.MeasureString(Text, f).Width;
return ((Pixels - 5) / MaxDigitWidth * 100 + 0.5) / 100;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个程序,使用C#中的PDFsharp手动生成PDF.虽然它相当繁琐但我必须使用它并接近完成任务.只剩下一个问题.
问题:我想知道如何在Arial中找出给定字符大小的给定字符的宽度.
我无法想出更精确的文本包装方法.现在,一个以像素为单位定义框的宽度,然后继续在该框中写出一个字符串.我只是猜测可以装在盒子里的弦的最大长度,并且有时会出现一些视觉上的奇怪现象.
有帮助吗?
谢谢