Разделение данных столбца CSV в новый файл CSV с помощью VBScript - PullRequest
0 голосов
/ 04 мая 2018

У меня есть файл CSV, в котором 2 столбца содержат несколько различных текстовых значений, например

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

Мне нужно использовать VBscript, чтобы разбить эти столбцы на новый CSV-файл без изменения текущего файла, ожидаемый результат в новом CSV-файле показан ниже:

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

К сожалению (?) Это должно быть сделано с VB Script и ничего больше.

Вот пример того, как выглядят данные (конечно, данные последовательно повторяются с некоторыми дополнительными записями через те же столбцы в файле 1.

Original file

И вот пример того, как он должен выглядеть, но он должен повторяться до тех пор, пока все уникальные записи из столбцов 1 и 2 в исходном файле не будут введены как одна запись в столбец 1 в новом файле и скопированы в Колонка 2 в том же новом файле. например, * 1 016 *

New file

Примеры в текстовом формате по запросу:

Оригинальный файл:

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

Новый файл:

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

1 Ответ

0 голосов
/ 06 мая 2018

Я думаю, что это простой вопрос использования FileSystemObject с Split функцией. Предполагая, что каждая строка ввода представляет собой только один набор данных, вы можете удалить двойные кавычки и обработать их там

Попробуйте этот сценарий 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...