问题描述
在尝试阅读时,我想就由字节顺序标记(十六进制的或 EF BB BF )引起的臭名昭著的问题获得新的建议。具有VBA(Excel)的UTF-8编码CSV。请注意,我想避免使用Workbooks.Open或FileSystemObject打开CSV。实际上,我宁愿使用adodb.RecordSet,因为我需要执行某种SQL查询。
在阅读了很多(很多!)内容之后,我认为解决此特定问题的4种最佳解决方案是:
- 在使用ADODB.Connection / ADODB.RecordSet读取CSV之前,请先删除BOM(例如,通过#iFile或Scripting.FileSystemObject-OpenAsTextStream来有效地读取文件的第一行并删除BOM)。
- 创建一个schema.ini文件,以便ADO正确解析CSV。
- 使用一些由向导创建的模块(例如W. Garcia's class module)。
- 使用ADODB.Stream并设置Charset =“ UTF-8”。
最后一个解决方案(使用流)似乎还不错,但是执行以下操作将返回一个字符串:
Sub loadCsv()
Const adModeReadWrite As Integer = 3
With CreateObject("ADODB.Stream")
.Charset = "utf-8"
.Mode = adModeReadWrite
.Open
.LoadFromFile ("C:\atestpath\test.csv")
Debug.Print .readtext
End With
End Sub
您知道有什么技巧可以将.readtext返回的字符串用作ADODB.RecordSet或ADODB.Connection的数据源(除了循环以手动填充记录集的字段之外)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)