DOBON.NET どぼん!のVB道掲示板(プログラム)過去ログ

VB.NETからADO.NETを使用してEXCELを取込む方法

●詳しい症状等:
ADO.NETを使用してEXCELシートを取込を実装したいと
考えいます。取込で、文字は取込が可能なのですが
数値、日付に変換されたシートはIsDBNullが戻ってきて
取り込み出来ません。仕様上取込めないのでしょうか。
それとも取込む方法はあるのでしょうか?

●希望限度額ポイント:
100
>●詳しい症状等:
>ADO.NETを使用してEXCELシートを取込を実装したいと
>考えいます。取込で、文字は取込が可能なのですが
>数値、日付に変換されたシートはIsDBNullが戻ってきて
>取り込み出来ません。仕様上取込めないのでしょうか。
>それとも取込む方法はあるのでしょうか?

回答ではありませんが、老婆心ながら生意気にもアドバイスのようなものを書かせていただきます。

自分の書いたコードが動かなく、その原因が知りたいという書き込みの場合、そのコードをある程度でも示さなければ、その書き込みを読んだ第三者には回答に必要な情報が少なすぎ、まともな回答は到底期待できないのではないでしょうか。「匿名」さんがおっしゃるように仕様だとすればこれだけで十分分かるという方もいらっしゃるかもしれませんが、そう決め付けるのは早急すぎます。それでなくても書き込みの少ないこの掲示板ですから、よりよい回答を得るためにはそれなりの情報の提示が必要だと思います。
>>●詳しい症状等:
>>ADO.NETを使用してEXCELシートを取込を実装したいと
>>考えいます。取込で、文字は取込が可能なのですが
>>数値、日付に変換されたシートはIsDBNullが戻ってきて
>>取り込み出来ません。仕様上取込めないのでしょうか。
>>それとも取込む方法はあるのでしょうか?
>
>回答ではありませんが、老婆心ながら生意気にもアドバイスのようなものを書かせていただきます。
>
>自分の書いたコードが動かなく、その原因が知りたいという書き込みの場合、そのコードをある程度でも示さなければ、その書き込みを読んだ第三者には回答に必要な情報が少なすぎ、まともな回答は到底期待できないのではないでしょうか。「匿名」さんがおっしゃるように仕様だとすればこれだけで十分分かるという方もいらっしゃるかもしれませんが、そう決め付けるのは早急すぎます。それでなくても書き込みの少ないこの掲示板ですから、よりよい回答を得るためにはそれなりの情報の提示が必要だと思います。

すみません。サンプルコードを付けます。
EXCELシートには2003/10/10(日付型)、2000(数値型)、AAA(文字)とします
名前定義をmyrangeとしています

Dim strcone As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=EXCELファイル;" & "Extended Properties=Excel 8.0;"

Dim objConn As New OleDbConnection(strcone)

objConn.Open()

'Dim objCmdSelect As New OleDbCommand("SELECT * FROM myrange", objConn)

Dim objReader As System.Data.OleDb.OleDbDataReader
objReader = objCmdSelect.ExecuteReader()
While objReader.Read()
objReader.GetValue(0).toString →(A)
End While

(A)で取得した際、日付、数値がobjReader.IsDBNull(0)=True
となってデータ内容が取得できません。PGが間違っていますか?
仕様でしょうか?
> Dim strcone As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=EXCELファイル;" & "Extended Properties=Excel 8.0;"
>
> Dim objConn As New OleDbConnection(strcone)
>
> objConn.Open()
>
> 'Dim objCmdSelect As New OleDbCommand("SELECT * FROM myrange", objConn)
>
> Dim objReader As System.Data.OleDb.OleDbDataReader
> objReader = objCmdSelect.ExecuteReader()
> While objReader.Read()
> objReader.GetValue(0).toString →(A)
> End While
>
>(A)で取得した際、日付、数値がobjReader.IsDBNull(0)=True
>となってデータ内容が取得できません。PGが間違っていますか?
>仕様でしょうか?

まず私はこの分野(データベース)は詳しくないということを先に言ってきます。それでもちょっと調べてみたところ(あまり時間がとれず、ちゃんと調べることが出来ませんでした)、次のページに多分同じであろう質問がありましたので、紹介させて頂きます。

http://www.dotnet247.com/247reference/msgs/28/140540.aspx

それにしてもobjCmdSelectを宣言している行がコメントアウトされているのですが。
>> Dim strcone As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=EXCELファイル;" & "Extended Properties=Excel 8.0;"
>>
>> Dim objConn As New OleDbConnection(strcone)
>>
>> objConn.Open()
>>
>> 'Dim objCmdSelect As New OleDbCommand("SELECT * FROM myrange", objConn)
>>
>> Dim objReader As System.Data.OleDb.OleDbDataReader
>> objReader = objCmdSelect.ExecuteReader()
>> While objReader.Read()
>> objReader.GetValue(0).toString →(A)
>> End While
>>
>>(A)で取得した際、日付、数値がobjReader.IsDBNull(0)=True
>>となってデータ内容が取得できません。PGが間違っていますか?
>>仕様でしょうか?
>
>まず私はこの分野(データベース)は詳しくないということを先に言ってきます。それでもちょっと調べてみたところ(あまり時間がとれず、ちゃんと調べることが出来ませんでした)、次のページに多分同じであろう質問がありましたので、紹介させて頂きます。
>
>http://www.dotnet247.com/247reference/msgs/28/140540.aspx
>
>それにしてもobjCmdSelectを宣言している行がコメントアウトされているのですが。
コメントアウトは間違っていました。すみません。HP紹介有難う御座います。
調査いたします。もし何か解りましたら、フォロー登録いたします

DOBON.NET | プログラミング道 | プログラミング掲示板