如何使列自动宽度时,文本在列长?
我用这个密码
Worksheet.Column(colIndex).AutoFitColumn() 'on all columns' Worksheet.cells.AutoFitColumns() Worksheet.Column(colIndex).BestFit = True 'on all columns'
这些方法都不管用
有什么办法可以解决这个问题吗?
注意: 我的一些文本使用 Unicode。
使用 AutoFitColumns,但是你必须指定单元格,我假设整个工作表:
AutoFitColumns
VB.NET
Worksheet.Cells(Worksheet.Dimension.Address).AutoFitColumns()
C #
Worksheet.Cells[Worksheet.Dimension.Address].AutoFitColumns();
请注意,您需要在填写工作表之后调用此方法。
您需要计算宽度。库中没有按照您的意图工作的自动调整大小的函数。
Autofitcolumn 无法处理包装的文本和带有公式的单元格。
看看 http://epplus.codeplex.com/discussions/218294?ProjectName=epplus的例子,你可以解决这个问题。
我已经在 EPPlus 的3.1.3.0版本中使用了这段代码,它正在工作:
worksheet.Column(1).AutoFit();
其中的工作表是引用我在代码中创建的工作表的变量(而不是具有静态方法的类!) .
显然你必须 在填充列之后调用此方法。
不得不使用 worksheet.Column(1).AutoFit(0); AutoFit ()没有做到这一点。
worksheet.Column(1).AutoFit(0);
我使用这个并且工作得很好。
Dim objExcel As New ExcelPackage Dim Sheet As ExcelWorksheet = objExcel.Workbook.Worksheets.Add("SheetName") Sheet.Cells("B1:BN").AutoFitColumns()
我知道有点晚了,但我今天也遇到了同样的问题。如果定义了 worksheet.DefaultColWidth,那么它就不能工作。我已经删除了这一行,并添加了 Worksheet.cells.AutoFitColumns();,它现在可以工作了。
worksheet.DefaultColWidth
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(); }
我觉得挺好的。
试试:
ExcelWorksheet wsSheet1 = ExcelPkg.Workbook.Worksheets.Add("Sheet1"); wsSheet1.Cells[wsSheet1.Dimension.Address].AutoFitColumns(); ExcelPkg.SaveAs();
只是想指出,你可以适应单元格没有指定的范围,只是要确保调用这一点后,你已经格式化了所有列等:
worksheet.Cells.AutoFitColumns()
作为.NET 的继承者.NET 核心不再支持使用 EPPplus 库的函数自动适应单元。
worksheet.Cells.AutoFitColumns();
或者
例外情况:
"System.Drawing is not supported on this platform."
系统。绘图程序集依赖于 GDI 和 Windows 特定的库,这些库必须由另一种解决方案替换。这个问题的解决办法对我来说是未知的。