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