0
截至目前,我正在使用oledbreader读取所有版本的excel文件。我提到一个DLL读取Excel 2010文件。但我无法使用oledbreader阅读一些excel 2010文件。所以我想用openxml来读取所有的excel文件。这是什么性能问题? 哪个更好?使用OpenXML读取Excel文件的性能
截至目前,我正在使用oledbreader读取所有版本的excel文件。我提到一个DLL读取Excel 2010文件。但我无法使用oledbreader阅读一些excel 2010文件。所以我想用openxml来读取所有的excel文件。这是什么性能问题? 哪个更好?使用OpenXML读取Excel文件的性能
使用以下代码从Excel电子表格中检索表名(工作表名称)和列名称,我的运气非常好。
Private Sub GetWorksheetData
Dim xlBaseConnStr1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XLS;Extended Properties=""Excel 8.0;HDR=Yes"""
Dim xlBaseConnStr2 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=XLS;Extended Properties=""Excel 12.0 Xml;HDR=YES"""
Dim xlName As String
Dim conStr As String
Dim oDia As New OpenFileDialog
oDia.ShowDialog()
xlName = oDia.FileName
If xlName = "" Then
Exit Sub
End If
Dim extType As String = Path.GetExtension(xlName)
Select Case extType
Case ".xls"
conStr = xlBaseConnStr1.Replace("XLS", xlName)
Case ".xlsx"
conStr = xlBaseConnStr2.Replace("XLS", xlName)
Case Else
MessageBox.Show("Unrecognized file type")
Exit Sub
End Select
Dim dtSheets As New DataTable
Using cn As New OleDbConnection(conStr)
cn.Open()
dtSheets = cn.GetSchema("Columns")
End Using
DataGrid1.ItemsSource = dtSheets.DefaultView
End Sub
上面的代码块从我放置的随机Excel电子表格中返回以下数据。
您需要导入下面的命名空间这个工作:
Imports System.Data.OleDb
Imports System.Data
Imports Microsoft.Win32
Imports System.IO
如果您尝试访问电子表格有宏,上面的代码可能会失败。
OleDbDataReader应该能够读取任何Excel 2010文件。具体造成这个问题的是什么? OleDbDataReader非常快速,因为它是前向的,只读的。 – Stewbob 2011-05-13 15:09:48
即时通讯使用objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,Nothing)从Excel工作表获取列名时出现如下错误:'外部数据库驱动程序(1)出现意外错误' – chinnu 2011-05-14 04:43:06