使用经典ASP导入csv文件时,删除双引号内的逗号

时间:2016-07-19 01:32:09

标签: asp-classic

我有像这样"1233","abcxyz","1,500","Qwerty","25,000"

的CSV数据

如何在classicASP中导入CSV时删除逗号此类值("1,500""25,000"

2 个答案:

答案 0 :(得分:0)

如果您的CSV不是太大,请实现 FileSystemObject.OpenTextFile 并逐个字符地读取它,将结果累积为String。做一个比较逻辑,忽略阅读时发现的所有双引号。这并不是那么容易,因为你将处理报价,因此需要一些逃避技术。

如果您按顺序编号,如果这些数字用逗号标记小数点或数千(数百万等),那么您将遇到更多麻烦,导致此示例(“1,500”,“25,000”)之后的内容并且通过char写char将产生:(1,500,25,000)。对此的解决方案是将双引号之间的所有逗号转换为;

编辑:我在想......也许一个readAll也可以做到这一点。我们试试吧:

path = Server.MapPath("\yoursite\yourfile.csv") 'this is absolute path on server (c:\ etc) - not url!
set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(path) then
     set file = fs.OpenTextFile(path, 1)
     txt = file.ReadAll
     for i = 1 to (Len(txt)-1)
          if file.Read(i) = """ then
               i = i + 1
          else
               txtaux = txtaux & file.Read(i)
          end if
     next
     file.Close()
else
     txt = " - error - "
end if
txt = txtaux
set fs = nothing
set file = nothing

如果这样运行(不确定因为我目前没有ASP的测试环境)那么你将把所有的CVS都放在 txt 字符串var中。 Buuuuttt ......我们只面对报价问题,而不是逗号...所以你必须在那里做一个解决方法,也许在里面实现另一个 if 来检测逗号是否在引号内,然后它需要更改为; ,例如,作为最终结果将为您带来的东西:10,000; 25,000等等。

答案 1 :(得分:0)

如果您的问题是因为逗号而解析CSV文件,您应该首先使用另一种方法来读取文件。 CSV格式比用逗号分隔的值更复杂,因此最好使用经过试验和测试的方法。

查看本文,了解如何使用ASP(使用JScript)读取CSV文件:http://mindmeat.blogspot.dk/2014/05/reading-excel-files-in-classic-asp.html

它确实需要在服务器上安装ACE驱动程序。