截至目前,我正在使用oledbreader阅读所有版本的excel文件。我引用了一个dll来读取Excel 2010文件。但我无法使用oledbreader阅读一些excel 2010文件。所以我想使用openxml来读取所有excel文件。这有什么性能问题吗? 哪个更好?
答案 0 :(得分:2)
我很幸运使用以下代码从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
如果您尝试访问的电子表格包含宏,则上述代码可能会失败。