当列中的文本很长时,如何使列成为自动宽度?
我用这个代码
Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
Worksheet.cells.AutoFitColumns()
Worksheet.Column(colIndex).BestFit = True 'on all columns'
这些方法均无效
有什么方法可以使其工作?
注意:我的一些文本使用Unicode。
当列中的文本很长时,如何使列成为自动宽度?
我用这个代码
Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
Worksheet.cells.AutoFitColumns()
Worksheet.Column(colIndex).BestFit = True 'on all columns'
这些方法均无效
有什么方法可以使其工作?
注意:我的一些文本使用Unicode。
Answers:
使用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();
}
您将需要计算宽度。库中没有自动调整大小的功能,可以正常使用。
Autofitcolumn不适用于自动换行的文本和具有公式的单元格。
请查看http://epplus.codeplex.com/discussions/218294?ProjectName=epplus,以获取有关如何解决此问题的示例。