自动列宽EPPlus慢



我使用以下代码将数据加载到工作表中(c#, EPPlus 4.04)并自动设置列宽度:

workSheet.Cells["A1"].LoadFromCollection(itemsToExport, PrintHeaders: true);
workSheet.Cells[workSheet.Dimension.Address].AutoFitColumns();

有一个显著的性能损失,似乎与工作表中记录的数量成线性关系。例如,在15K的记录上有2秒的差异,我必须创建多个文件。

有没有一种方法可以在不诉诸异步处理之类的情况下加快速度?

Ps,在填充数据之前设置AutoFitColumns不起作用,列将保持在数据太小的宽度

Ron Beyer的评论是对的。我从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)

所有的单元格都将被处理,不幸的是,在一个循环中。也许我应该使用一个等间距的字体,比如Courier,然后自己计算宽度。

在EPPlus库中的AutoFitColumns可以使用一些额外的注意,因为它的代码复杂性是35atm(但保持良好的工作!)。

相关内容

  • 没有找到相关文章

最新更新