Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用ePlus修复性能低下的问题?_C#_Excel_Epplus_Worksheet - Fatal编程技术网

C# 如何使用ePlus修复性能低下的问题?

C# 如何使用ePlus修复性能低下的问题?,c#,excel,epplus,worksheet,C#,Excel,Epplus,Worksheet,我正在加载Excel文件,以便批量更新主数据中的数据。我有4张床单。导出、县、组织、设置。只有导出是可见的。其他一切都隐藏起来了 文件的加载速度非常慢。最多需要2-3分钟 我已经发现了这个问题。当我取消隐藏每个工作表并加载文件时,就根本没有性能问题。我们不想展示这些表格,以免给我们的客户带来混乱。我制作了一个小的控制台应用程序来测试这种行为 private static void Main(string[] args) { using (var packa

我正在加载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是非常慢的,当我的床单没有隐藏时,wsheets是非常快的。 获取一个wsheet加载的设置很快

除了解开被单,我该怎么办

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

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


这是一个非常奇怪的行为,但既然每个人都应该编辑并保存文件,我就不再花时间试图解决这个问题了

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

worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.Hidden;

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

worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.Visible;

您是否可以在图纸可见的情况下保存文件,但在客户加载文件时使用“加载时运行”宏将其隐藏?这也是可能的,但他们正试图尽可能避免vba。我通过使用文件流在后端找到了一个解决方法。谢谢你的建议我删除了我的回复,我在错误的文件上测试了--与文件流不兼容-这并不能解决我的问题。为了隐藏和取消隐藏工作表,我首先必须访问package.workbook.worksheets,这会造成巨大的延迟。@Hairydruidy您可以在取消隐藏模式下加载它们,然后隐藏。你写的“取消隐藏”模式有很好的性能,不是吗?问题是客户不应该“取消隐藏”工作表(他们可以更改的越少越好)。所以隐藏是默认的。
worksheet.Hidden = OfficeOpenXml.eWorkSheetHidden.Visible;