Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2012, 14:23   #1
lenwe
 
Регистрация: 24.12.2012
Сообщений: 4
По умолчанию Обработка csv файла (С++)

Здравствуйте, помогите написать обработчик csv файла, разделитель ; (точка с запятой). Точнее он должен удалять ненужные столбцы, и соединять 3 столбца. Объяснить как работает могу, дял реализации не хватате знание языка =( Может это проще сделать на другом языке? Нету разницы на каком языке, главное что бы работало. В свое время прогулял пары по работе с файлами.

Как я понимаю, эта прога должна искать разделитель (точку с запятой) соответствующий номеру столбца (третий разделитель - это начало 4 столбца) и удалять все символы вплоть до следующего разделителя. Или может можно как-то проще?

Говорили еще что можно сделать на VBS, но там, помоему, еще более запутано.

Буду рад если поможете, можно частями, вс таки самому то же интересно разобраться =)
lenwe вне форума Ответить с цитированием
Старый 24.12.2012, 22:36   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

реализация на VBS (написал только ради того, чтобы получить новые знания по этому языку):
Код:
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
    sPath = objFSO.GetAbsolutePathName(objArgs(I))
    Set objTextFile1 = objFSO.OpenTextFile (sPath, ForReading)
    Set objTextFile2 = objFSO.OpenTextFile (sPath & "new", ForWriting, true)
    Do Until objTextFile1.AtEndOfStream
        strNextLine = objTextFile1.Readline
        values = Split(strNextLine , ";")
        t = false
        For J = 0 to Ubound(values)
            If J = 2 or J = 1 then
                If t Then
                    objTextFile2.Write(";" & values(J))
                Else
                    t = true
                    objTextFile2.Write(values(J))
                End If
            End If
        Next
        objTextFile2.WriteLine
    Loop
    objTextFile1.Close
    objTextFile2.Close
    objFSO.DeleteFile(sPath)
    objFSO.MoveFile sPath&"new", sPath
Next
Сохранить в файле с расширением vbs.
Перетащить csv-текстовик на скрипт (нету проверки на то, что это файл, т.е. теоретически можно перетащить и папку).
В файле останутся 2 и 3 столбцы (If J = 2 or J = 1 then).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.12.2012, 07:31   #3
lenwe
 
Регистрация: 24.12.2012
Сообщений: 4
По умолчанию

Спасибо! А что означает переменная t
Код:
t = false
?

Осталось только объединить значения трех полей в одно..
lenwe вне форума Ответить с цитированием
Старый 25.12.2012, 08:45   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пожалуйста.
t нужна, чтобы перед первым значением не ставить точку с запятой.
Чтобы объединить значения, можно написать, например, objTextFile2.Write(values(0) & values(1) & values(2)) - 1, 2 и 3 поля теперь будут записаны слитно.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
много csv в один xls и обработка Dexter_M Microsoft Office Excel 26 23.09.2011 11:04
Как правильно разделить столбцы csv-файла? ondar Общие вопросы Delphi 2 11.06.2011 20:24
Обработка CSV через PHP MCLotos PHP 8 17.02.2011 14:10
открытие файла csv в excel Luchiya Microsoft Office Excel 4 15.12.2010 14:21