我有从指定格式的 Excel 工作表导入的代码。在其中一列中,大多数数据都是数字,但也存在非数字值。由于某种原因,导入代码会忽略非数字值。
连接字符串如下所示:
Dim FileConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & Path & "\" & _
Filename & ";Extended Properties=" & _
"""Excel 12.0;HDR=YES;IMEX=1;"""
实际的导入代码如下所示:
Dim Factory As DbProviderFactory = _
DbProviderFactories.GetFactory("System.Data.OleDb")
Dim Adapter As DbDataAdapter = Factory.CreateDataAdapter(), _
DataObject As New DataSet
Using Connection As DbConnection = Factory.CreateConnection
Connection.ConnectionString = FileConnectionString
Using Command As DbCommand = Connection.CreateCommand
Command.CommandText = _
"SELECT [Column1], [Column2]" & _
"FROM [Sheet1$]"
Adapter.SelectCommand = Command
Adapter.Fill(DataObject)
...
请注意我已经启用了IMEX = 1通知 Excel 将出现混合数据。这似乎没有帮助。知道发生了什么事吗?
我注意到引擎从列中的第一个值推断列的数据类型。
因此,如果您的第一个值是数字,引擎将假定该列为数字,并且在尝试将 alpha 值转换为数字时将会失败。
我通常所做的是将下划线附加到 Excel 上的所有值,然后在 SQL 或 DataSet 上替换第一个下划线。希望它会有所帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)