Автоматическая ширина столбца в EPPlus
Как сделать так, чтобы столбцы были автоматически ширины, когда текст в столбцах длинный?
Я использую этот код
Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
Worksheet.cells.AutoFitColumns()
Worksheet.Column(colIndex).BestFit = True 'on all columns'
Ни один из этих методов не работает
Есть ли способы заставить его работать?
Примечание: некоторые из моих текстов используют Unicode.
Ответы
Ответ 1
Используйте AutoFitColumns
, но вы должны указать ячейки, я принимаю весь рабочий лист:
VB.NET
Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()
С#
Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();
Обратите внимание, что вам необходимо вызвать этот метод после заполнения рабочего листа.
Ответ 2
Я использовал этот код в версии 3.1.3.0 EPPlus, и он работает:
worksheet.Column(1).AutoFit();
где лист - это переменная, ссылающаяся на лист, который я создал в своем коде (не класс со статическим методом!).
Очевидно, вы должны вызывать этот метод после заполнения столбцов.
Ответ 3
Я знаю, что это старый вопрос, но я использую приведенный ниже код, и он, кажется, напрямую касается того, что вы пытались сделать.
using (var xls = new ExcelPackage())
{
var ws = xls.Workbook.Worksheets.Add("Some Name");
//**Add Column Names to worksheet!**
//**Add data to worksheet!**
const double minWidth = 0.00;
const double maxWidth = 50.00;
ws.Cells.AutoFitColumns(minWidth, maxWidth);
return pkg.GetAsByteArray();
}
Ответ 4
Я знаю, что немного поздно, но у меня была такая же проблема сегодня. Если у вас есть worksheet.DefaultColWidth
лист .DefaultColWidth, он не будет работать. Я удалил эту строку и добавил Worksheet.cells.AutoFitColumns();
и это работает сейчас.
Ответ 5
Просто хочу указать, что вы можете уместить ячейки без указания диапазона, просто обязательно вызовите это после того, как вы отформатировали все столбцы и т.д.:
worksheet.Cells.AutoFitColumns()
Ответ 6
Это работает просто отлично для меня.
Пытаться:
ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
Ответ 7
Вам нужно будет рассчитать ширину. В библиотеке нет функции автоматического изменения размера, которая будет работать так, как вы собираетесь.
Autofitcolumn не будет работать с переносимым текстом и ячейками с формулами.
Посмотрите на http://epplus.codeplex.com/discussions/218294?ProjectName=epplus примеры того, как вы можете решить проблему.
Ответ 8
При использовании worksheet.Column(1).AutoFit(0);
AutoFit() не выполнял трюк.
Ответ 9
Я использую это и хорошо работаю.
Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()
Ответ 10
Будьте осторожны, вы должны сделать это перед сохранением, иначе это не сработает.