代码之家  ›  专栏  ›  技术社区  ›  Hairydruidy

如何用epplus解决性能低下的问题?

  •  1
  • Hairydruidy  · 技术社区  · 6 年前

    我正在加载一个excel文件,用于批量更新主数据中的数据。我有4张床单。出口,县,组织,设置。只有导出可见。其他的东西都藏起来了。

    文件加载非常慢。最多需要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很快。

    除了解开床单,我该怎么办?

    更新

    我们进一步调试了这个问题,隐藏/未隐藏的列是一个假阳性。当我们停止调试并再次启动它时,由于超时时间太长,调试器仍然能够以某种方式获取旧结果。

    我现在找到了真正的罪魁祸首。当我们使用epplus导出文件时,最终用户应该编辑数据,将其上载回ui进行验证。当用户上传同一个文件时,与未编辑该文件而导出的文件一样,会发生此长操作。

    这是一个相当奇怪的行为,但既然每个人都应该编辑和保存文件,我将不再花时间试图解决这个问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Eugene Chybisov    6 年前

    可以在“取消隐藏”模式下更新工作表,然后使用此属性隐藏它们

    worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.Hidden;
    

    worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.VeryHidden;
    

    您还可以使用

    worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.Visible;