2013-04-16 1 views
1

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

\ п для новой строки полукокса в тексте сильфона

получил Формат-

Month1.csv

ID, Пользователь, год, MONTH1, Month2, Month3, ..., MonthN \ п 2, User2,2012,12 \ п 1, User1,2011,5 \ п 4, User5,2014,56 \ п 3, User4,2013,34 \ п

Month2.csv ID, Пользователь, год, MONTH1, Month2, Month3, ..., MonthN \ п 1, User1,2011,10 \ п 2, User2,2012,66 \ п 3, User4,2013,40 \ п 4, User5,2014,26 \ п

Month3.csv ID , User, Year, Month1, Month2, Month3, ..., MonthN \ n 4, User5,2014,67 \ n 1, User1,2011,12 \ n 3, User4,2013,23 \ n 2, User2,2012,11 \ n

Здесь col1, Col2 и Col3 одинаковы в каждом CSV, но последовательность строк не является одинаковой.

У меня есть все эти CSV в одной папке и требуемый формат csv в той же папке с другим именем с идентификатором, User, Year, Month1, Month2, Month3, ..., MonthN с данными, доступными в col1 (ID), Col2 (Пользователь) и Col3 (год)

Я хотел создать определенный формат CSV файл как ниже -

Обязательный Формат- ID, Пользователь, год, MONTH1, Month2, Month3, ..., MonthN \ n 1, User1,2011,5,10,12, ..., 50 \ n 2, User2,2012,12,66,11, ..., 12 \ n 3, User4,2013,34, 40,23, ..., 13 \ n 4, User5,2014,56,26,67, ..., 52 \ n

Мне нужно решение в VBS, чтобы мы могли выполнить его на любом из оконных компьютеров без дополнительного программного обеспечения. Может кто-нибудь, пожалуйста, помогите мне в этом

ответ

0

Используйте объект filesystems, чтобы открыть каждый CSV и пропустить через них, игнорируя 1-ю строку.

вы можете использовать разделение, используя «,» в качестве разделителя.

Если вам требуется сравнить 1-ые 3 поля и выводить только уникальные объекты, то вы можете использовать объект словаря. как только ваше расщепление разбито, добавьте все 3 поля в одну строку, чтобы проверить, не находится ли в вашем словаре объект, если он не записывает его и не добавляет в словарь. Если он игнорируется и продолжается.

Надежда, что помогает

0

Скопируйте первый CSV для требуемого нового имени файла. Прочитайте содержимое друг от друга CSV и разделите его на vbLf. Пропустите первое поле массива (которое содержит заголовки) и добавьте остальные в CSV назначения. Примерно так:

Set fso = CreateObject("Scripting.FileSystemObject") 

isFirst = True 
For Each f In fso.GetFolder("C:\folder").Files 
    If isFirst Then 
    f.Copy "AllMonths.csv" 
    isFirst = False 
    Else 
    Set csv = fso.OpenTextFile("AllMonths.csv", 8) 
    lines = Split(f.OpenAsTextStream.ReadAll, vbLf) 
    For i = 1 To UBound(lines) 
     csv.Write lines(i) & vbLf 
    Next 
    csv.Close 
    End If 
Next 
Смежные вопросы