まず、Excel スプレッドシートへの OleDB 接続を開きます。
次に、次のようなものを使用します (VB.NET で表示)。
Imports System.Data
Imports System.Data.Odbc
Imports System.Data.OleDb
Dim DSN As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MYEXCELFILE.XLS;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;MAXSCANROWS=12"""
Dim OleDbConn As New OleDbConnection(DSN)
OleDbConn.Open()
Dim tables As System.Data.DataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim tableName As String
Dim canBeImported As Boolean
For Each dr As System.Data.DataRow In tables.rows
tableName = dr.Item("TABLE_NAME").ToString
canBeImported = (tableName.IndexOfAny(New Char() {" ","[","]","'","""","`",";"}) < 0)
Next
OleDbConn.Close()
これは、Excel ファイル内のすべてのテーブル (テーブル = シートまたは名前付き範囲) をループし、それぞれの名前を取得します。さらに、ODBC 経由でアクセスできない文字を含むテーブルを除外します (スペースは最も一般的な問題です)。