Можно ли установить автоматическую ширину в электронной таблице, созданной в формате Open XML SDK, без расчета отдельных значений ширины? - PullRequest
4 голосов
/ 03 мая 2010

Я работаю над созданием файла Excel из большого набора данных с помощью Open XML SDK. Мне наконец-то удалось получить функциональный узел Columns, который указывает все столбцы, которые будут фактически использоваться в файле. Есть свойство "BestFit", которое может быть установлено в true, но это, очевидно, ничего не делает. Есть ли способ автоматически установить эти столбцы для «наилучшего соответствия», чтобы, когда кто-то открывает этот файл, их размер уже соответствовал нужному значению? Или я вынужден заранее рассчитать ширину каждого столбца и установить это в коде?

Ответы [ 2 ]

3 голосов
/ 04 мая 2010

То, как я понимаю спецификацию и это обсуждение MSDN , BestFit говорит о том, что ширина была автоматически рассчитана в Excel, но это не говорит Excel, что он должен вычислить ее снова в следующий раз открыт.

Как указывает "goodol" в этом обсуждении, я думаю, что ширина может быть рассчитана только при отображении столбца, поскольку она зависит от содержимого, используемого шрифта, других параметров стиля ... Так что даже если вы хотите предварительно -считайте ширину самостоятельно, помните, что это только оценка, и она может быть неправильной, если содержимое содержит много «широких» символов. Или Open XML SDK делает это для вас?

0 голосов
/ 04 февраля 2015

Я использую EPPlus , который я настоятельно рекомендую. Мне понадобилось время, чтобы понять, как это сделать, вот что я придумал:

// Get your worksheet in "sheet" variable

// Set columns to auto-fit
for (int i = 1; i <= sheet.Dimension.Columns; i++)
{
    sheet.Column(i).AutoFit();
}
...