首页 > 解决方案 > 从csv文件中读取ADODB中的小数点选择

问题描述

我在 Excel VBA 中创建了带有 ADODB 连接的用户公式,以从 csv 文件中读取字段。一切都很好,但有一件事:当字段有小数时(小数字符是“.”),连接的结果是没有点的整个数字。例如,如果该字段包含 10.38,则结果将为 1038。

.csv 文件的分隔符是“;”,我尝试了 schema.ini 方法,为包含小数的特定字段指定分隔符和数据类型。

相关的vba代码:

Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
xlcon.Provider = "Microsoft.Jet.OLEDB.4.0"
xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=Yes;"""
xlcon.Open
MyQuery = "SELECT " & myep & " AS DATO FROM [" & currentDataFileName & ".csv] WHERE ENT=" & ent & " AND FECHA='" & myfc & "'"
On Error GoTo misErrores
Set xlrs = xlcon.Execute(MyQuery)
resultado = xlrs.Fields(0)
xlrs.Close
Set xlrs = Nothing
xlcon.Close
Set xlcon = Nothing
Ep = resultado

schema.ini 文件:

[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
col4="x1" Double

该文件有大约 100 个不同的字段,但我认为我必须只为包含小数的字段指定类型。在这种情况下,只有位于第 4 位的名为“x1”的字段包含小数。不幸的是,这不起作用。难道我做错了什么?谢谢。

标签: excelvbaformatadodb

解决方案


我认为问题在于 CSV 文件包含带有点作为小数分隔符的值,例如12.34,但是运行此程序的客户端上的区域设置设置为逗号作为小数分隔符,对吗?

根据文档,您可以在 schema.ini 文件中指定小数分隔符,因此请尝试以下操作:

[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
DecimalSymbol=.
col4="x1" Double

推荐阅读