Как сделать так, чтобы столбцы были автоматически ширины, когда тексты в столбцах длинные?
Я использую этот код
Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
Worksheet.cells.AutoFitColumns()
Worksheet.Column(colIndex).BestFit = True 'on all columns'
Ни один из этих методов не работает
Есть ли способы заставить его работать?
Примечание: некоторые из моих текстов используют Unicode.
Используйте AutoFitColumns
, но вы должны указать ячейки, я принимаю весь рабочий лист:
VB.NET
Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()
С#
Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();
Обратите внимание, что вам необходимо вызвать этот метод после заполнения рабочего листа.
Я использовал этот код с версией 3.1.3.0 EPPlus и работает:
worksheet.Column(1).AutoFit();
где рабочий лист - это переменная, ссылающаяся на рабочий лист, который я создал в моем коде (не класс со статическим методом!).
Очевидно, что вы должны вызвать этот метод после заполнения столбцов.
Я знаю, что это старый вопрос, но я использую приведенный ниже код, и он, кажется, напрямую касается того, что вы пытались сделать.
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();
}
Я знаю, что немного поздно, но у меня была такая же проблема сегодня. Если у вас есть worksheet.DefaultColWidth
лист .DefaultColWidth, он не будет работать. Я удалил эту строку и добавил Worksheet.cells.AutoFitColumns();
и это работает сейчас.
sheet.Cells.AutoFitColumns()
проще, спасибо за совет! В ClosedXml вы делаете sheet.Columns().AdjustToContents()
Это работает просто отлично для меня.
Пытаться:
ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
Просто хочу указать, что вы можете уместить ячейки без указания диапазона, просто обязательно вызовите это после того, как вы отформатировали все столбцы и т.д.:
worksheet.Cells.AutoFitColumns()
Вам нужно будет рассчитать ширину. В библиотеке нет функции автосохранения, которая будет работать так, как вы планируете.
Autofitcolumn не будет работать с обернутым текстом и ячейками с формулами.
Посмотрите http://epplus.codeplex.com/discussions/218294?ProjectName=epplus на примеры того, как вы можете решить проблему.
При использовании worksheet.Column(1).AutoFit(0);
AutoFit() не выполнял трюк.
Я использую это и хорошо работаю.
Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()
Будьте осторожны, вы должны сделать это перед сохранением, иначе это не сработает.