<分区>
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/