自动列宽度在EPPlus

本文关键字:EPPlus | 更新日期: 2023-09-27 18:05:53

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

我使用这个代码

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

这些方法都不起作用

有什么办法使它工作吗?

自动列宽度在EPPlus

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

VB。净

Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()
c#

Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();

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

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

worksheet.Column(1).AutoFit();

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

显然,你必须调用这个方法后,你已经填写了列

只是想指出你可以在没有指定范围的情况下适合单元格,只是要确保在格式化所有列等之后调用这个:

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

我知道有点晚了,但是我今天遇到了同样的问题。如果你定义了worksheet.DefaultColWidth,它就行不通了。我已经删除了那行并添加了Worksheet.cells.AutoFitColumns();,现在它可以工作了。

我用的很好。

试题:

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

. net Core作为。net的后继者不再支持使用EPPplus库自动适配单元格的功能。

worksheet.Cells.AutoFitColumns();

worksheet.Column(1).AutoFit();

原因例外:

"System.Drawing is not supported on this platform."

系统。绘图组件依赖于GDI和Windows特定的库,这些库必须由另一个解决方案取代。

必须使用worksheet.Column(1).AutoFit(0); AutoFit()不起作用

您需要计算宽度。库中没有自动调整大小的函数可以按您的预期工作。

Autofitcolumn不适用于换行文本和带公式的单元格。

查看http://epplus.codeplex.com/discussions/218294?ProjectName=epplus,查看如何解决这个问题的示例。

我用了这个,效果很好。

Dim objExcel As New ExcelPackage
Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName")
Sheet.Cells("B1:BN").AutoFitColumns()