如何使用epplus修复性能下降的问题?

时间:2019-01-29 10:50:24

标签: c# excel epplus worksheet

我正在加载一个Excel文件以批量更新主数据中的数据。我有四张纸。导出,县,组织,设置。仅导出可见。其他所有东西都是隐藏的。

文件的加载速度非常慢。最多需要2-3分钟。

我已经找到问题了。当我取消隐藏每张纸并加载文件时,根本就没有性能问题。我们不想显示表格,以免给我们的客户造成混乱。我制作了一个小型控制台应用程序来测试此行为。

private static void Main(string[] args)
        {
            using (var package = new ExcelPackage(new FileInfo(@"")))
            {
                var wb = package.Workbook;
                var wsheets = wb.Worksheets;
                var settings = wsheets["Settings"];
            }

            Console.ReadKey();
        }

wb很快 隐藏我的工作表时,wsheets真的很慢,而没有隐藏时,wsheets真的很快。 进行设置时,加载一张wsheets很快。

除了取消隐藏工作表外,我该怎么办?

更新

我们进一步调试了该问题,隐藏/未隐藏列是误报。当我们停止调试并重新启动它时,由于巨大的超时,调试器仍然能够以某种方式获取旧结果。

我现在找到了真正的罪魁祸首。当我们使用EPPLUS导出文件时,最终用户应编辑数据,然后将其上传回UI进行验证。当用户上传同一文件时,就像在不编辑文件的情况下导出该文件一样,会发生这种冗长的操作。

这是一个很奇怪的行为,但是由于每个人都应该编辑文件并保存它,因此我不再花时间尝试解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以取消隐藏方式更新工作表,然后使用此属性将其隐藏

worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.Hidden;

worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.VeryHidden;

您还可以使用以下代码通过代码取消隐藏它们

worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.Visible;