自动列宽在 EPPlus

如何使列自动宽度时,文本在列长?

我用这个密码

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

这些方法都不管用

有什么办法可以解决这个问题吗?

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

115134 次浏览

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

VB.NET

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

C #

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

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

您需要计算宽度。库中没有按照您的意图工作的自动调整大小的函数。

Autofitcolumn 无法处理包装的文本和带有公式的单元格。

看看 http://epplus.codeplex.com/discussions/218294?ProjectName=epplus的例子,你可以解决这个问题。

我已经在 EPPlus 的3.1.3.0版本中使用了这段代码,它正在工作:

worksheet.Column(1).AutoFit();

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

显然你必须 在填充列之后调用此方法

不得不使用 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()

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

我知道这是一个老问题,但我使用下面的代码,它似乎直接地解决您试图做什么。

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();
}

我觉得挺好的。

试试:

ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();

只是想指出,你可以适应单元格没有指定的范围,只是要确保调用这一点后,你已经格式化了所有列等:

worksheet.Cells.AutoFitColumns()

作为.NET 的继承者.NET 核心不再支持使用 EPPplus 库的函数自动适应单元。

worksheet.Cells.AutoFitColumns();

或者

worksheet.Column(1).AutoFit();

例外情况:

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

系统。绘图程序集依赖于 GDI 和 Windows 特定的库,这些库必须由另一种解决方案替换。这个问题的解决办法对我来说是未知的。