Я потратил много часов, пытаясь определить формулу для преобразования пикселей .NET в ширину столбца Excel с использованием формата OpenXML. Я использую EPPlus для создания документов xmls. Я пытаюсь определить ширину для столбца, который должен быть автоматическим. Я получаю количество пикселей, измеряя строку, а затем пытаюсь преобразовать ее в ширину столбца для OpenXML, которая измеряется в символах, которые я думаю.
Я прочитал документацию Microsoft о том, как ее преобразовать, и попробовал предложенную им формулу, но она даже не близка к точности:
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;
}
Любые идеи?