Excel に OleDb で接続 … Visual Basic
Excel と VisualBasic を接続してアプリケーションを作ろうとしていました。
そしたら、キャストが間違っているらしく・・・
どういうことかというと、
OleDbDataReader で SELECT によって呼び出した値を取り出そうとしたのですが、 GetString でやったらダメだと怒られたわけですよ。
どういうことかというと、 Excel から呼び出す場合、データ型は、その列で一番多いものになります。
数値か文字列か。
レコードとして、
Name
-----
1
2
3
あ
い
と 5レコードがあった場合、半分以上(3レコード)が数値なので、GetDouble
を使うと呼び出すことができます。
しかし、数値型でないレコードについては、Null
が返ってきます。
文字列の場合はその逆で、GetString
で取り出し可能になり、文字列型でないレコードが Null
で返ってきます。
文字列と数値が同じ数だけあった場合は、・・・・・・どうなるんでしょうね。
文字列が入ることもあり、数値が入ることもある場合は、数値を文字列にして入れてください・・・とマイクロソフトが言っています。 (具体的な方法は知りません。)
ちなみに、Excel から取り出す場合のSQLは、
SELECT column1, column2, column3 FROM [Sheet1$]
となります。
FROM
の記述方法に注意です。
カラム名は、先頭の行(セルでいうとA1,B1,C1,…)に入っている文字列になります。
Visual Basic.NET至高の技 SQL は、私も使っている本で、Excel との連携についても書かれています。その他 Oracle, MySQL, SQLServer 等も。