使用VBScript将CSV列数据拆分为新的CSV文件

时间:2018-05-04 10:36:40

标签: csv parsing vbscript

我有一个CSV文件,其中2列包含几个不同的文本值,例如

Column 1: Reptiles, Health, Hygiene  
Column 2: Purity

我需要使用VBscript将这些列拆分为新的CSV文件,而不更改当前文件,预期输出如下所示:

Column 1    Column 2
Reptiles        Reptiles
Health          Health
Hygiene         Hygiene
Purity          Purity

不幸的是(?)必须用VB Script完成它。

以下是数据外观的示例(当然,数据通过文件1中的相同列的一些额外条目一致地重复。

Original file

以下是它需要查看的示例,但它需要重复,直到原始文件中第1列和第2列的所有唯一条目都作为单个条目输入到新文件中的第1列并复制到第2列在同一个新文件中。 e.g。

New file

请求的文本格式示例:

原始档案:

Column 1,Column 2
"Reptiles, Health, Hygiene",Purity

新文件:

Column 1,Column 2
Reptiles,Reptiles
Health,Health
Hygiene,Hygiene
Purity,Purity

1 个答案:

答案 0 :(得分:0)

我认为将FileSystemObjectSplit函数一起使用是一件简单的事情。 假设每个输入行只是一组数据,您可以删除双引号并从那里处理

尝试使用此VB脚本( 编辑以分别处理标题行 ):

Const Overwrite = True
Set ObjFso = CreateObject("Scripting.FileSystemObject")

Set ObjOutFile = ObjFso.CreateTextFile("My New File Path", Overwrite)
Set ObjInFile = ObjFso.OpenTextFile("My Old File Path")

' Skip processing first header line and just write it out as is
strLine = ObjInFile.ReadLine
ObjOutFile.WriteLine strLine

Do Until ObjInFile.AtEndOfStream
    ' Remove all double quotes to treat this as one set of data
    strLine = Replace(ObjInFile.ReadLine, """","")
    varData = Split(strLine,",")
    ' Write out each element twice into its own line
    For i = 0 to uBound(varData)
        ObjOutFile.WriteLine varData(i) & "," & varData(i) 
    Next i
Loop

ObjInFile.Close
ObjOutFile.Close