ExcelのデータをDataTableに読み込んだとき、数値と数値以外の値が含まれる列の数値以外の値が取得できない

解決


くりごはん  2009-02-04 00:22:01  No: 141443

VB2008で、Excelのデータを以下のようにDataTableに格納しています。

'Excel Open
Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection
con.ConnectionString = _
    "provider=Microsoft.Jet.OLEDB.4.0; " & _
    "Data Source=" & Excelファイル名 & ";" & _
    "Extended Properties=""Excel 8.0;HDR=YES;"""
con.Open()

'データの取得(DataTable)へ格納
Dim sql as String = "SELECT Data1, Data2 FROM [Sheet1$]"
Dim cmd As OleDb.OleDbCommand = _
         New OleDb.OleDbCommand(sql, con)
Dim dt As New DataTable
Dim oleDa As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(cmd)
oleDa.Fill(dt)

ここで、Excelの[Sheet1]シートのData2列の値は、数値と文字列が混在していますが、
値をとろうとすると、Data2列の数値以外の文字が入っている行のDataTable「dt」のData2の値がからっぽ(NULL?)になっているようです。

MsgBox("【" & dt.Rows(対象の行).Item("Data2") & "】")    '←【】と表示される

この列の数値の値は正しく取得できているようです。
数値以外の値が入っている場合は、値を取得できないのでしょうか?
どなたかご存じの方、教えてください。よろしくお願いします。


魔界の仮面弁士  2009-02-04 01:24:53  No: 141444

インポートモードで取りこむために、接続文字列に「IMEX=1」を加えてみてください。

以下、IMEX=1 を指定した接続文字列の例と、IMEX の動作に関する資料:

http://msdn.microsoft.com/ja-jp/library/system.data.oledb.oledbconnectionstringbuilder.trygetvalue.aspx
http://msdn.microsoft.com/ja-jp/library/ms254978%28VS.80%29.aspx#sectionSection7
http://support.microsoft.com/kb/257819/ja


くりごはん  2009-02-10 01:03:19  No: 141445

魔界の仮面弁士さん、ご連絡が遅くなりまして申し訳ございませんでした。
「IMEX=1」および教えていただいたサイトを参考にします。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加