Автоматическая ширина столбца в 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

Будьте осторожны, вы должны сделать это перед сохранением, иначе это не сработает.