减少 Excel 访问时间
reducing Excel access time
我在 c# 中使用 Excel 个文件,使用 Microsoft.Office.Interop.Excel。
我的问题是我的程序运行很慢。
基本上,它所做的是遍历 Excel sheet 的单元格,并读取每个单元格中的数据。
我使用以下命令:
value = (range.Cells[row, col] as Excel.Range).Value2;
其中 value 是我的变量,range 是 Range class.
的 Interop.Excel 对象
在 Interop 中是否有更好的方法来访问访问文件或我应该使用的另一个库?
如果可能的话,使用像 EPPLUS 这样的库,它比互操作快得多,而且更容易编程。
如果由于外部限制无法实现,请尽量减少互操作调用的数量。在 excel 中进行循环是自找麻烦 - 因为每个单元格都必须通过互操作进行访问,并且将数据从 excel 编组到您的应用程序会占用大量时间。最好使用 get_Range() 一次获取整个数组。单个请求会花很长时间,但之后在 C# 中循环非常快。一般来说,在 C# 方面做任何你能做的事都是有益的——即使 excel 会提供相同的功能。
如果阅读是您唯一的用例,那么轻巧且速度非常快。
我在 c# 中使用 Excel 个文件,使用 Microsoft.Office.Interop.Excel。 我的问题是我的程序运行很慢。 基本上,它所做的是遍历 Excel sheet 的单元格,并读取每个单元格中的数据。
我使用以下命令:
value = (range.Cells[row, col] as Excel.Range).Value2;
其中 value 是我的变量,range 是 Range class.
的 Interop.Excel 对象在 Interop 中是否有更好的方法来访问访问文件或我应该使用的另一个库?
如果可能的话,使用像 EPPLUS 这样的库,它比互操作快得多,而且更容易编程。
如果由于外部限制无法实现,请尽量减少互操作调用的数量。在 excel 中进行循环是自找麻烦 - 因为每个单元格都必须通过互操作进行访问,并且将数据从 excel 编组到您的应用程序会占用大量时间。最好使用 get_Range() 一次获取整个数组。单个请求会花很长时间,但之后在 C# 中循环非常快。一般来说,在 C# 方面做任何你能做的事都是有益的——即使 excel 会提供相同的功能。
如果阅读是您唯一的用例,那么轻巧且速度非常快。