C# 2.0 解析 Excel 电子表格的最快方法

标签 c# excel interop

<分区>

Possible Duplicate:
Reading Excel files from C#

从 Csharp 的 excel 中读取大量数据的最快方法是什么。示例代码会很棒。 .

最佳答案

在我们的桌面环境中,我通过 COM 使用 Excel 达到了性能、灵 active 和稳定性之间的最佳组合。

始终通过同一线程访问 Excel。

我使用后期绑定(bind)(在 VB.Net 中)使我的应用版本独立。

应用程序的其余部分是用 C# 开发的,只有这部分和其他一些小部分是用 VB 开发的,因为它们在 VB.Net 中更容易。

Dim workBook As Object = GetObject(fileName)
Dim workSheet As Object = workBook.WorkSheets.Item(WorkSheetNr)
Dim range As Object = workSheet.Cells.Item(1, 1)

Dim range2 As Object = range.CurrentRegion

Dim rrow As Integer = range2.Row ' For XL97, first convert to integer. XL97 will generate an error ' 
Dim rcolumn As Integer = range2.Column

Dim top As Object = workSheet.Cells.Item(rrow, rcolumn)
Dim bottom As Object = top.Offset(range2.Rows.Count - 1, range2.Columns.Count - 1)

range = workSheet.Range(top, bottom)

Dim values As Object(,)

values = range.Value

这里有一个二维数组,其中包含来自 Excel 的值。最后一条语句将数据从 Excel 获取到 .Net。

由于 Excel 工作表的大小限制,这些不能变得很大,所以内存应该不是问题。

我们已经在多个系统上进行了一些性能测试。它经过优化以创建尽可能少的(进程外)COM 调用。

这种方式给了我们最好的性能,特别是因为数据直接在数组中,并且访问这些数据比通过数据集更快。

此解决方案中启动 Excel 的速度较慢。但是,如果您需要一个接一个地处理多个文件,则启动 Excel 的成本只需一次。

此外,我不会在服务器环境中使用此解决方案。

关于C# 2.0 解析 Excel 电子表格的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/457636/

相关文章:

vba - excel vba宏中如何循环绘图

c# - 有没有办法以编程方式将数字签名添加到 word 文档中的 VBA 宏?

objective-c - 如何在 Objective-C 中使用 Swift 字符串枚举?

c# - 如何在不锁定的情况下打开 Excel 文件?

c# - 如何自动化测试 Outlook Add-In?

c# - 如何以 List<T> 作为参数从泛型方法中读取值

c# - 谷歌搜索按钮点击 Selenium

c# - 在Unity中制作无尽的戒指视觉效果

java - 如何使用 Apache CSV Parser 读取 Excel(.xlsx) Multipartfile?当前方法不适用于设置为 EXCEL 的 CSVFormat

image - 插入Picture类的属性