当前位置:  开发笔记 > 编程语言 > 正文

VBscript有模块吗?我需要处理CSV

如何解决《VBscript有模块吗?我需要处理CSV》经验,为你挑选了1个好方法。

我需要读取CSV文件,我可以使用的唯一语言是VBscript.

我目前只是打开文件并拆分逗号,它工作正常,因为字段中没有任何引用的逗号.但我知道这是一个非常脆弱的解决方案.

那么,我可以使用VBscript模块这样的东西吗?在某个地方得到一个经过试验和测试的正则表达式,只能用逗号分隔而不是用引号括起来?

任何建议都感激不尽.



1> Tomalak..:

VBScript没有可与Perl相媲美的模块系统.但是,您可以使用ADO打开CSV文件,并像数据库表一样访问它们.代码将是这样的:

(有趣的评论仅仅是为了修复SO破解的VB语法突出显示)

Dim conn    ''// As ADODB.Connection
Dim rs      ''// As ADODB.RecordSet
Dim connStr ''// As String
Dim dataDir ''// As String

dataDir = "C:\"                         '"
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dataDir & ";Extended Properties=""text"""

Set conn = CreateObject("ADODB.Connection")
conn.Open(connStr)
Set rs = conn.Execute("SELECT * FROM [data.txt]")

''// do something with the recordset
WScript.Echo rs.Fields.Count & " columns found."
WScript.Echo "---"

WScript.Echo rs.Fields("Col1Name").Value
If Not rs.EOF Then
  rs.MoveNext
  WScript.Echo rs.Fields("Col3Name").Value
End If

''// explicitly closing stuff is somewhat optional
''// in this script, but consider it a good habit
rs.Close
conn.Close

Set rs = Nothing
Set conn = Nothing

创建一个schema.ini准确描述输入的文件是最佳选择.如果你不这样做,你强制文本驱动程序猜测,如果它猜错了,所有的赌注都会关闭.在schema.ini必须驻留在你的数据是同一个目录.

我看起来像这样:

[data.txt]
Format=Delimited(;)
DecimalSymbol=.
ColNameHeader=True
MaxScanRows=0
Col1=Col1Name Long
Col2=Col2Name Long
Col3=Col3Name Text
Col4=Col4Name Text

并与此data.txt:

a;b;c;d
1;2;"foo bar";"yadayada"
1;2;"sample data";"blah"

我得到这个输出:

C:\>cscript -nologo data.vbs
4 columns found.
---
1
sample data

C:\>

值得一读这方面:关于 MSDN 关于文本文件的大量ADO.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有