【发布时间】:2012-03-01 10:21:00
【问题描述】:
作为数据转换的一部分,我需要从 Excel 工作表中读取数据。某些列主要包含数字数据,但可能在 Excel 工作表中的某处包含一些字母数字数据。问题是,我的转换将字母数字值视为空(或空白。使用 .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 语句中转换数据?
任何帮助将不胜感激!
【问题讨论】:
-
查看这个答案;它应该可以解决您的问题:stackoverflow.com/questions/3081708/…
-
谢谢,这也很有帮助。
标签: .net vb.net dataset oledb oledbdataadapter