Mic*_*len 5 c# performance epplus-4
我使用此代码将数据加载到工作表(C#、EPPlus 4.04)中并自动设置列宽:
workSheet.Cells["A1"].LoadFromCollection(itemsToExport, PrintHeaders: true);
workSheet.Cells[workSheet.Dimension.Address].AutoFitColumns();
Run Code Online (Sandbox Code Playgroud)
有一个显着的性能损失,似乎与工作表中的记录数量成线性关系。例如,15K 记录有 2 秒的差异,我必须创建多个文件。
有没有办法在不诉诸异步处理等的情况下加快速度?
Ps,在填充数据之前设置 AutoFitColumns 不起作用,列的宽度对于数据来说太小了。
罗恩·拜尔的评论是正确的。我从epplus.codeplex.com下载了源代码并查看了该函数:
/// <summary>
/// Set the column width from the content of the range.
/// Note: Cells containing formulas are ignored if no calculation is made.
/// Wrapped and merged cells are also ignored.
/// </summary>
/// <param name="MinimumWidth">Minimum column width</param>
/// <param name="MaximumWidth">Maximum column width</param>
public void AutoFitColumns(double MinimumWidth, double MaximumWidth)
Run Code Online (Sandbox Code Playgroud)
不幸的是,所有单元格都将被循环处理。也许我应该使用 Courier 等均匀间隔的字体并自己计算宽度。
EPPlus 库中的 AutoFitColumns 需要额外注意,因为其代码复杂度为 35 atm(但请继续努力!)。