|
分類:[.NET 全般]
お世話になります
環境はWinXP,VB.Net2005,Excel2003,SQLServer2005です
エクセルデータを取り込んでテーブルに書き込んで、エラーがあればエクセルに書き出して表示するプログラムを作っています
得意先コード 商品金額
1200 1000
1210 1AB
1220 1230
一例として上記3つがあったとして
Dim oleCn As New OleDb.OleDbConnection()
Dim oleCm As New OleDb.OleDbCommand()
Dim oleDa As New OleDb.OleDbDataAdapter()
Dim dt As New DataTable()
Dim strWork(1) As String
Dim intRow As Integer = 0
'エクセルの場所とエクセルファイルを指定(Me.txt_PATH.Textから)
oleCn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0; " + _
"Data Source=" & Me.txt_PATH.Text & ".xls" & ";" + _
"Extended Properties=""Excel 8.0;HDR=YES;"""
oleCm.Connection = oleCn
oleCm.CommandText = "Select * from [Sheet1$] "
oleDa.SelectCommand = oleCm
Try
oleDa.Fill(dt)
Catch ex As Exception
oleDa.Dispose()
oleDa = Nothing
oleCm.Dispose()
End Try
Do While intRow < dt.Rows.Count - 1
strWork(0) = dt.Rows(intRow).Item(0).ToString '得意先コード
strWork(1) = dt.Rows(intRow).Item(1).ToString '商品金額
intRow += 1 '次の行へ
Loop
oleDa.Dispose()
oleDa = Nothing
READ_EXCEL = True
以上の様に記述しています
取り込み時、商品金額が上の例だと「1210 1AB」の商品金額がDBNullになってしまっています
エラー出力時には空欄(DBNull)で出てしまうのできちんと「1AB」と取りたいのですが
どの様にすれば取る事が出来るのでしょうか
別例として商品金額に1ABや文字列の方が多く入っていると数字の方が空欄(DBNull)になってしまいます
どうかよろしくお願いします
|