gpt4 book ai didi

Excel VBA将csv字符串处理为数组

转载 作者:行者123 更新时间:2023-12-02 08:50:08 25 4
gpt4 key购买 nike

我有通过 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

显然,它无法处理包含特殊标记的字段。

解析这些数据的可靠方法是什么?

谢谢

编辑 2012 年 10 月 13 日数据样本

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 - 从 shell 打开(双击 - 无额外选项) enter image description here

最佳答案

如果您不介意将数据放入工作簿中:您可以使用空白工作表,将数据添加到 1 列中,然后调用 TextToColumns 。然后,如果您想以数组形式获取数据,只需从工作表的UsedRange 加载它即可。

'Dim myArray 'Uncomment line if storing data to array.
'Assumes cvsString is already defined
'Used Temp as sheet for processing
With Sheets("Temp")
.Cells.Delete
.Cells(1, 1) = cvsString
.Cells(1, 1).TextToColumns Destination:=Cells(1, 1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False
'myArray = .UsedRange 'Uncomment line if storing data to array
End With

关于Excel VBA将csv字符串处理为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com