2009-06-16 9 views
0

OleDbDataAdapter関数を使用して、Excel 97の単一のタブ付きスプレッドシートをSQLサーバーテーブルに読み込もうとしています。私が見つけたすべてのドキュメントから、最初のパラメータは "select * from [sheet1 $]"でなければなりません。これは、ワークシート内のタブの名前がSheet1の場合にのみ、うまく動作します。実際のタブ名に[]内のものを変更すると、うまく動作します。vb 2008にXLSファイルを読み込むときのタブ名は何ですか?

問題は、読み込まれているスプレッドシートが別のシステムから取得されていて、そのシステムが負荷ごとにタブ名を変更してしまうことです。ユーザーがスプレッドシートを開いてタブの名前を変更する必要がないように、タブ名の意味を把握するにはどうすればよいですか?

答えて

1

[OK]まず、ExcelスプレッドシートへのOleDB接続を開きます。

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ファイル内のテーブル(表=シートまたは名前付き範囲)のすべてをこの意志ループと名を取得:

次に、以下の(VB.NETに示されている)のようなものを使用それぞれの。さらに、ODBCを介してアクセスできない文字を含むテーブルを除外します(スペースは最も一般的な問題です)。

+0

これをコンパイルするには、どの名前空間をインポートする必要がありますか? – user66061

+0

これらはあなたをカバーする必要があります。 System.Data System.Data.Odbc System.Data.OleDb – richardtallent

+0

また、実際のスプレッドシートファイル名を追加するにはどうすればいいですか? – user66061

0

私は過去にこれを調べましたが、私はスプレッドシートを与える人々にタブ名を強制しなければならないという結論に至りました。信頼できる方法が見つからないようですそれら。

関連する問題