我有通过 http 下载获得的 csv 字符串(utf-8)。
根据情况,字符串中的数据可能包含不同数量的列,但每次处理字符串时,它将包含相同数量的列并且是连续的。(数据将是偶数)。
该字符串可以包含任意数量的行。
第一行将始终是标题。
字符串字段将用双引号括起来,并且可以包含逗号、引号和换行符。
字符串中的引号和双引号通过加倍 "" 和 '' 进行转义
换句话说,这是一种格式良好的 csv 格式。Excel 通过其标准文件打开机制对这些数据进行格式化没有问题。
但是我想避免保存到文件然后打开 csv,因为在某些情况下我需要处理输出,甚至与工作表上的现有数据合并。
(通过编辑添加了以下信息) Excel 应用程序将分发到各个目的地,如果可能的话,我想避免潜在的权限问题,似乎什么都不写到磁盘是一个好方法
我在想类似下面的伪:
rows = split(csvString, vbCrLf) 'wont work due to newlines inside string fields?
FOREACH rows as row
fields = split(row, ',') 'wont work due to commas in string fields?
ENDFOR
显然,这不能处理包含特殊标记的字段。
解析这些数据的可靠方法是什么?
谢谢
编辑 13/10/2012 数据样本
csv ,因为它会出现在记事本中(请注意,并非所有换行符都是 \r\n 有些可能是 \n)
LanguageID,AssetID,String,TypeID,Gender
3,50820,"A string of natural language",3,0
3,50819,"Complex text, with comma, "", '' and new line
all being valid",3,0
3,50818,"Some more language",3,0
Excel 2010 中的相同 csv - 从外壳打开(双击 - 没有额外选项)