在ASP中逐行读取CSV文件

时间:2014-04-24 07:34:30

标签: csv vbscript asp-classic

我正在尝试使用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识别换行符。有任何想法吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

使用FileSystem Object来阅读CSV?不要重新发明轮子,有不同的,可靠的方法来完成你想要的ASP。

使用OLEDB JetOLEDB ACE驱动程序读取文件的最简单方法

基本上你需要创建一个具有特定OLEDB.Connection的{​​{1}}对象来获取CSV中的所有数据作为行;稍后您可以使用Connection String方法将所有数据作为数组传递,或者您可以直接使用GetRows

与使用此功能相关的帖子

ASP.NET(Ace)When reading a CSV file using a DataReader and the OLEDB Jet data provider, how can I control column data types?

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驱动程序的连接几乎相同(这是重要部分)。