EPPlus中的自动列宽

时间:2013-03-26 16:55:29

标签: c# .net vb.net epplus

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

我使用此代码

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

这些方法都不起作用

有没有办法让它发挥作用?

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

10 个答案:

答案 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特定的库,必须将其替换为另一种解决方案。对我来说,这个问题的解决方案是未知的。