首页 > 解决方案 > 使用 VBScript 将 CSV 列数据拆分为新的 CSV 文件

问题描述

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

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

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

第 1 栏 第 2 栏
爬行动物爬行动物
健康 健康
卫生 卫生
纯度纯度

不幸的是(?)它必须用 VB 脚本来完成,别无其他。

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

原始文件

这是一个示例,说明它的外观,但它需要向下重复,直到原始文件中第 1 列和第 2 列的所有唯一条目都作为单个条目输入到新文件中的第 1 列并复制到第 2 列同一个新文件。例如

新文件

根据要求以文本格式举例:

原始文件:

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

新文件:

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

标签: csvparsingvbscript

解决方案


我认为这是使用FileSystemObjectwithSplit函数的简单问题。假设每个输入行只是一组数据,您可以删除双引号并从那里处理

试试这个 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

推荐阅读