当列中的文本很长时,如何使列成为自动宽度?
我使用此代码
Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
Worksheet.cells.AutoFitColumns()
Worksheet.Column(colIndex).BestFit = True 'on all columns'
这些方法都不起作用
有没有办法让它发挥作用?
注意:我的一些文本使用Unicode。
答案 0 :(得分:210)
使用AutoFitColumns
,但您必须指定单元格,我假设整个工作表:
VB.NET
Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()
C#
Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();
请注意,您需要在填写工作表后调用此方法。
答案 1 :(得分:36)
我已将此代码用于EPPlus的3.1.3.0版本并且正在运行:
worksheet.Column(1).AutoFit();
其中工作表是引用我在代码中创建的工作表的变量(不是带有静态方法的类!)。
显然,您必须在填写完后调用此方法。
答案 2 :(得分:13)
我知道这是一个老问题,但我使用下面的代码,它似乎直接解决了你试图做的事情。
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();
}
答案 3 :(得分:9)
我知道有点迟了但我今天遇到了同样的问题。如果您定义了worksheet.DefaultColWidth
,则无法正常工作。我已删除该行并添加Worksheet.cells.AutoFitColumns();
,现在可以正常使用。
答案 4 :(得分:6)
只是想指出您可以在不指定范围的情况下容纳单元格,只需确保在格式化所有列等之后调用它即可。
worksheet.Cells.AutoFitColumns()
答案 5 :(得分:5)
对我来说很好。
尝试:
ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
答案 6 :(得分:3)
您需要计算宽度。库中没有可以按预期工作的自动调整功能。
Autofitcolumn不适用于带有公式的包装文本和单元格。
请查看http://epplus.codeplex.com/discussions/218294?ProjectName=epplus,了解如何解决问题。
答案 7 :(得分:2)
不得不使用worksheet.Column(1).AutoFit(0);
AutoFit()没有做到这一点。
答案 8 :(得分:1)
我使用它并且运作良好。
Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()
答案 9 :(得分:0)
作为.NET的后继产品的.NET Core不再支持使用EPPplus库自动调整单元格的功能。
worksheet.Cells.AutoFitColumns();
或
worksheet.Column(1).AutoFit();
导致异常:
"System.Drawing is not supported on this platform."
System.Drawing程序集依赖于GDI和Windows特定的库,必须将其替换为另一种解决方案。对我来说,这个问题的解决方案是未知的。