データ変換の一部として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ステートメントでデータをキャストしようとする必要がありますか?
任意の助けもいただければ幸いです!
この回答を参照してください。それはあなたを修正する必要があります:http://stackoverflow.com/questions/3081708/excel-cell-formatting-problem – codechurn
ありがとう、それも有用でした。 –