EPPlus中的自动列宽

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

我使用这个代码

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

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

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

 worksheet.Column(1).AutoFit(); 

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

显然你必须在填满列后调用这个方法

我知道有点晚,但今天我也遇到了同样的问题。 如果你有一个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(); } 

你将需要计算宽度。 图书馆没有自动调整function,可以按照你的意图工作。

自动填充列不能用包装文本和单元格使用公式。

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