Я разрабатываю класс, который позволяет пользователям создавать электронные таблицы Excel на лету (используя API OpenXML), и мне нужно рассчитать ширину столбцов, чтобы они автоматически помещались в самую широкую ячейку в столбце.
У меня есть следующий код для расчета ширины каждого столбца (используя формулу здесь и этот учебник ):
private double CalculateColumnWidth(int textLength)
{
var font = new System.Drawing.Font("Calibri", 11);
float digitMaximumWidth = 0;
using(var graphics = Graphics.FromImage(new Bitmap(200, 200)))
{
for(var i = 0; i < 10; ++i)
{
var digitWidth = graphics.MeasureString(i.ToString(), font).Width;
if (digitWidth > digitMaximumWidth)
digitMaximumWidth = digitWidth;
}
}
return Math.Truncate((textLength * digitMaximumWidth + 5.0) / digitMaximumWidth * 256.0) / 256.0;
}
Это работает нормально, тольковопрос: есть ли способ избавиться от объектов Bitmap и Graphics, которые мне не нужны для вычисления ширины столбца Excel?Почему объект Graphics необходим для этого?Спасибо заранее