ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 429|回复: 10

[求助] ADO读取CSV文件(UTF-8)中的证件号码显示为科学计数法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-31 21:52 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

如下图:  请大神指导该如何需改参数。谢谢!

1722433730909.png


Sub readCSV()
    Dim conn As Object
    Dim rs As Object
     
    Set conn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
     
    ' 定义CSV文件路径
    Dim csvFilePath As String
    csvFilePath = ThisWorkbook.Path & "\客户信息.csv"
     
    ' 定义连接字符串,指定文本模式,并定义分隔符为逗号
    Dim connectionString As String
    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                       ThisWorkbook.Path & ";Extended Properties='text;HDR=Yes;FMT=Delimited;CharacterSet=65001';"
     
    ' 打开连接
    conn.Open connectionString
     
    ' 执行查询,从CSV文件中选择数据
    rs.Open "SELECT * FROM [客户信息.csv]", conn, 1, 3  ' 1 = adOpenStatic, 3 = adCmdText
     
    ' 遍历记录集
    While Not rs.EOF
        For j = 0 To rs.fields.Count - 1
            Debug.Print rs.fields(j).Name & ":" & rs.fields(j).Value
        Next j
        rs.MoveNext
    Wend
     
    ' 关闭记录集和连接
    rs.Close
    conn.Close
     
    ' 清理对象
    Set rs = Nothing
    Set conn = Nothing
End Sub


TA的精华主题

TA的得分主题

发表于 2024-7-31 22:35 | 显示全部楼层
来源AI
修改连接字符串的参数:
在连接字符串中添加IMEX=1参数,这会告诉OLEDB驱动程序在读取文本文件时将所有数据字段视为文本,而不是根据内容自动判断类型。这可以避免数字被自动转换成科学计数法。

connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                   ThisWorkbook.Path & ";Extended Properties='text;HDR=Yes;FMT=Delimited;CharacterSet=65001;IMEX=1';"

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-1 08:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
f8b1987 发表于 2024-7-31 22:35
来源AI
修改连接字符串的参数:
在连接字符串中添加IMEX=1参数,这会告诉OLEDB驱动程序在读取文本文件时 ...

谢谢大神!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-1 09:14 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-3 19:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
f8b1987 发表于 2024-7-31 22:35
来源AI
修改连接字符串的参数:
在连接字符串中添加IMEX=1参数,这会告诉OLEDB驱动程序在读取文本文件时 ...


未解决
1722684534680.png

TA的精华主题

TA的得分主题

发表于 2024-8-3 22:40 | 显示全部楼层
这个好像还挺难办的,所以数据源头把它设置成字符串比较好,给15位及以上数字加双引号或者单引号也行,这样ado读取到Excel就可以,其他软件导出csv文件的时候看能不能设置输出带双引号或者单引号。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-4 13:04 | 显示全部楼层
quqiyuan 发表于 2024-8-3 22:40
这个好像还挺难办的,所以数据源头把它设置成字符串比较好,给15位及以上数字加双引号或者单引号也行,这样 ...

采取了变通方式,变为TXT,直接对文本操作。不过效率低多了。

TA的精华主题

TA的得分主题

发表于 2024-8-4 13:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提示一下,schema.ini.

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-4 13:33 | 显示全部楼层
smiletwo 发表于 2024-8-4 13:04
采取了变通方式,变为TXT,直接对文本操作。不过效率低多了。

还有个方法,导入到access文件中,也可以把

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-5 17:04 | 显示全部楼层
f8b1987 发表于 2024-8-4 13:33
还有个方法,导入到access文件中,也可以把

可以,不过经常出错,个别字段的原始数据不标准转换出错。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 09:20 , Processed in 0.043030 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表