EPPlus中的自动列宽

Pen*_*gan 127 .net c# vb.net epplus

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

我用这个代码

 Worksheet.Column(colIndex).AutoFitColumn() 'on all columns'
 Worksheet.cells.AutoFitColumns()
 Worksheet.Column(colIndex).BestFit = True  'on all columns'
Run Code Online (Sandbox Code Playgroud)

这些方法都不起作用

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

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

Tim*_*ter 233

使用AutoFitColumns,但你必须指定单元格,我假设整个工作表:

VB.NET

Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()
Run Code Online (Sandbox Code Playgroud)

C#

Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();
Run Code Online (Sandbox Code Playgroud)

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

  • 重要的是,您需要在填充工作表后调用此方法,因为如果工作表中没有数据,Worksheet.Dimension属性将返回null. (8认同)
  • 这绝对是正确的答案 - Pangan应该这样标记. (4认同)
  • 当我没有提供任何参数时,AutoFitColumns方法对我不起作用,当我为它添加最小和最大宽度时,它工作得很好. (3认同)
  • 如果您计算了单元格,则必须首先调用“Worksheet.Calculate()”,以便确定这些单元格的值。 (2认同)

Dan*_*sco 38

我已将此代码与EPPlus的3.1.3.0版本一起使用,它正在工作:

worksheet.Column(1).AutoFit();
Run Code Online (Sandbox Code Playgroud)

其中工作表是引用我在代码中创建的工作表的变量(不是具有静态方法的类!).

显然,填写完列后必须调用此方法.


小智 15

我知道这是一个老问题,但我使用下面的代码,它似乎直接解决了你试图做的事情.

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();
}
Run Code Online (Sandbox Code Playgroud)


Jos*_*ose 10

我知道有点晚了,但今天我遇到了同样的问题.如果您已worksheet.DefaultColWidth定义,则无效.我已删除该行并添加Worksheet.cells.AutoFitColumns();,现在可以使用了.

  • `sheet.Cells.AutoFitColumns()`更简单,感谢小费!在ClosedXml中,你做`sheet.Columns().AdjustToContents()` (5认同)

joh*_*y 5 10

只是想指出您可以在不指定范围的情况下容纳单元格,只需确保在格式化所有列等后调用它:

worksheet.Cells.AutoFitColumns()
Run Code Online (Sandbox Code Playgroud)


Ond*_*nek 7

.NET Core 作为 .NET 的后继者,不再支持 EPPplus 库的自动调整单元格功能。

worksheet.Cells.AutoFitColumns();
Run Code Online (Sandbox Code Playgroud)

或者

worksheet.Column(1).AutoFit();
Run Code Online (Sandbox Code Playgroud)

导致异常:

"System.Drawing is not supported on this platform."
Run Code Online (Sandbox Code Playgroud)

System.Drawing 程序集依赖于 GDI 和 Windows 特定库,必须用其他解决方案替换它们。这个问题的解决方案对我来说是未知的。


小智 5

它对我来说很好.

尝试:

ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1");
wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns();
ExcelPkg.SaveAs();
Run Code Online (Sandbox Code Playgroud)