148

当列中的文本很长时,如何使列自动宽度?

我使用此代码

 Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
 Worksheet.cells.AutoFitColumns()
 Worksheet.Column(colIndex).BestFit = True  'on all columns'

这些方法都不起作用

有什么方法可以让它工作吗?

注意:我的一些文本使用 Unicode。

4

10 回答 10

273

使用AutoFitColumns,但您必须指定单元格,我假设整个工作表:

VB.NET

Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()

C#

Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();

请注意,您需要在填写工作表后调用此方法。

于 2013-03-26T17:00:10.393 回答
44

我已将此代码与 EPPlus 的 3.1.3.0 版本一起使用,并且它正在工作:

worksheet.Column(1).AutoFit();

其中工作表是引用我在代码中创建的工作表的变量(不是具有静态方法的类!)。

显然,您必须在填写完列后调用此方法

于 2013-05-28T15:52:08.910 回答
18

只是想指出您可以在不指定范围的情况下适应单元格,只需确保在格式化所有列等后调用它:

worksheet.Cells.AutoFitColumns()
于 2018-10-25T16:36:00.093 回答
15

我知道这是一个老问题,但我使用下面的代码,它似乎直接解决了你试图做的事情。

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();
}
于 2016-06-30T14:20:55.597 回答
11

我知道有点晚了,但我今天遇到了同样的问题。如果你有一个worksheet.DefaultColWidth定义,它不会工作。我已经删除了该行并添加了Worksheet.cells.AutoFitColumns();它,它现在可以工作了。

于 2015-09-18T10:18:45.167 回答
6

它对我来说很好。

尝试:

ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
于 2018-07-02T09:13:43.387 回答
3

不得不使用worksheet.Column(1).AutoFit(0);AutoFit() 并没有成功。

于 2013-07-23T07:09:24.497 回答
3

您将需要计算宽度。库中没有自动调整大小的功能可以按您的意愿工作。

Autofitcolumn 不适用于换行的文本和带有公式的单元格。

查看http://epplus.codeplex.com/discussions/218294?ProjectName=epplus了解如何解决问题的示例。

于 2013-03-26T17:03:03.137 回答
3

作为 .NET 的继承者的 .NET Core 不再支持带有 EPPplus 库的函数自动调整单元格。

worksheet.Cells.AutoFitColumns();

或者

worksheet.Column(1).AutoFit();

导致异常:

"System.Drawing is not supported on this platform."

System.Drawing 程序集依赖于 GDI 和 Windows 特定库,这些库必须由另一个解决方案替换。这个问题的解决方案对我来说是未知的。

于 2019-11-15T13:39:14.737 回答
1

我使用它并且运行良好。

Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()
于 2013-12-05T20:21:11.060 回答