データ変換の一環として、Excelシートからデータを読み取る必要があります。特定の列には主に数値データが含まれていますが、Excelシートのどこかに英数字データが含まれている場合があります。問題は、私の変換では英数字の値がnull(または空白。.ToString()メソッドを使用すると "")と見なされることです。
Excelに接続するには、oledb接続を作成し、OleDbDataAdapterを作成してから、DataSetにアダプターを入力します。
接続用のVBコードは次のとおりです。
private _oleadpt As OleDbDataAdapter
private _oleconnection As New OleDbConnection
Dim olecomm As OleDbCommand
'_database comes from a settings file and is the full path to an excel document
Dim connstring As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _database & ";Extended Properties=""Excel 8.0;HDR=YES;"""
_oleconnection.ConnectionString = connstring
olecomm = New OleDbCommand
olecomm.CommandText = "SELECT RegionalBranch, DocumentType, TiffFileNumberReference, VersionNumber, RTSItemNumber, ItemSearch, HeatNumber, RTSVendorNumber, PurchaseOrderNumber, Branch, " + _
"Quality, CreationDate, CreationTime, ReceiverNumber, ChathamItemNumber, ChathamVendorNumber, ChathamDivision, Processed FROM [Sheet1$]"
olecomm.Connection = _oleconnection
_oleadpt = New OleDbDataAdapter(olecomm)
Dim commandBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(_oleadpt)
ds = New DataSet
_oleconnection.Open()
_oleadpt.Fill(ds)
データアダプターは、最初の行に基づいて列のデータ型を決定していると思いますが、多くの行が表示されます。それは私の問題の始まりである数字の列が数値であると決定します。
Excelで列の書式を変更しても、データセットのデータ型には影響しないようです。
データアダプターまたはデータセットに、列に使用するデータのタイプを指示する方法はありますか?または、SQLステートメントでデータをキャストする必要がありますか?
どんな助けでも大歓迎です!