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)
请注意,填写工作表后需要调用此方法.
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();
,现在可以使用了.
joh*_*y 5 10
只是想指出您可以在不指定范围的情况下容纳单元格,只需确保在格式化所有列等后调用它:
worksheet.Cells.AutoFitColumns()
Run Code Online (Sandbox Code Playgroud)
.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)