Как сделать столбцы шириной автоматически, если текст в столбцах длинный?
Я использую этот код
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()
C #
Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();
Обратите внимание, что вам нужно вызвать этот метод после заполнения рабочего листа.
источник
Worksheet.Calculate()
сначала необходимо вызвать, чтобы можно было определить значение для этих ячеек.Я использовал этот код с EPPlus версии 3.1.3.0, и он работает:
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.Cells.AutoFitColumns()
источник
Я знаю, что немного поздно, но сегодня у меня была такая же проблема. Если у вас есть
worksheet.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.Column(1).AutoFit(0);
AutoFit () не помогло.источник
Вам нужно будет рассчитать ширину. В библиотеке нет функции автоматического изменения размера, которая бы работала так, как вы предполагаете.
Автозаполнение столбца не работает с переносом текста и ячейками с формулами.
Посмотрите на http://epplus.codeplex.com/discussions/218294?ProjectName=epplus примеры того, как вы можете решить эту проблему.
источник
.NET Core как преемник .NET больше не поддерживает функцию автозаполнения ячеек с библиотекой EPPplus.
worksheet.Cells.AutoFitColumns();
или
worksheet.Column(1).AutoFit();
вызывает исключение:
"System.Drawing is not supported on this platform."
Сборка System.Drawing зависит от конкретных библиотек GDI и Windows, которые необходимо заменить другим решением. Решение этой проблемы мне неизвестно.
источник
Я использую это и хорошо работает.
Dim objExcel As New ExcelPackage Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName") Sheet.Cells("B1:BN").AutoFitColumns()
источник