我正在尝试使用VBScript读取CSV文件,这会导致巨大的问题,因为它无法识别换行符。我现在的方式是:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(server.mappath("my_csv_file.csv"), ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
arrFields = Split(strLine, ",")
LOOP_STUFF_HERE
Loop
CSV文件有几行,但问题是它正在将CSV文件作为一条长行读取,并且每行的最后一项与下一行的第一项组合,因为之后没有逗号最后一行(它是由我的客户在Excel中创建的,然后发送给我)。我的解决方案是我必须在文本编辑器中打开它,手动添加逗号到行尾,然后删除换行符。从长远来看,这是行不通的,因为我们正在建立一个自动化系统。
基本上,我需要能够Split
换行符(我已经尝试Split(strLine, "\n"
,但这似乎不起作用)然后一旦它们被线分割打破,然后用逗号分隔它们。换句话说,它就是一个多维数组。
我无法找到如何让VBScript识别换行符。有任何想法吗?谢谢你的帮助。
答案 0 :(得分:2)
使用FileSystem Object
来阅读CSV?不要重新发明轮子,有不同的,可靠的方法来完成你想要的ASP。
使用OLEDB Jet
或OLEDB ACE
驱动程序读取文件的最简单方法
基本上你需要创建一个具有特定OLEDB.Connection
的{{1}}对象来获取CSV中的所有数据作为行;稍后您可以使用Connection String
方法将所有数据作为数组传递,或者您可以直接使用GetRows
。
与使用此功能相关的帖子
ASP.NET(Ace)Microsoft.ACE.OLEDB.12.0 CSV ConnectionString
ASP-Classic(Jet)Reading csv file in classic asp. Problem: column values are truncated up to 300 characters
Jet或Ace驱动程序的连接几乎相同(这是重要部分)。