Мне очень повезло, используя следующий код для извлечения имен таблиц (имен рабочих таблиц) и имен столбцов из электронных таблиц 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
Если вы используете электронную таблицупри попытке доступа есть макросы, приведенный выше код может завершиться ошибкой.