0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 33
1

Разделитель при чтении csv-файла

05.11.2013, 18:30. Показов 3112. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет,

ребята, код внизу отлично считывает в Excel csv-файл, когда разделитель полей в этом файле ",".
Но, если вместо этого другой разделитель, типа, ";" , то этот код работает плоховато.
Подскажите, друзья, пожалуйста, как корректно прочитать файл, где разделитель точка с запятой?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Open fname For Input As #1
 
r=0
 
Do Until EOF(1)
 
Input #1, data
ActiveCell.Offset(r,0) = data
r = r + 1
 
Loop
 
Close #1
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2013, 18:30
Ответы с готовыми решениями:

Изменить разделитель в файле CSV
Здравствуйте! Подскажите пожалуйста, как при сохранении файла в формате CSV изменить разделитель...

Беда с кодировкой при чтении csv файла
Привет! При создание csv в OpenOffic, файл сохраняется в UTF-8 и при обработки в php проблем не...

Не выводит русские слова при чтении и лемматизации из csv-файла
Добрый день! К сожалению, я совсем не программист и очень далека от этого, но решение задач...

Как определить разделитель CSV-файла?
Как определить разделитель CSV-файла? Мое VB-приложение создает csv-file, который может быть потом...

8
3217 / 966 / 223
Регистрация: 29.05.2010
Сообщений: 2,085
05.11.2013, 18:52 2
Пример такого csv сбрось, посмотрю.
0
6878 / 2810 / 534
Регистрация: 19.10.2012
Сообщений: 8,573
05.11.2013, 18:59 3
Да и этот код тоже работает плоховато...
0
0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 33
06.11.2013, 10:57  [ТС] 4
Ниже кусок из файла:

2013/12/16;2;88000.00;610.00000;610.00000;610.00000;610.00000;610.00000;1;40;1.00;1.0000 0;1.00000;1760000.00;1107.33000;1028.66000;44000.00000;15.10.2013;16.12.2013;15: 14:53;8.09997;586.00000;1.00000;8.06971;569.00000;1;566.74


конечно можно заменить все символы ";" на "," , но просто файлов 750 штук и они тяжелые..

Добавлено через 1 минуту
Цитата Сообщение от Hugo121 Посмотреть сообщение
Да и этот код тоже работает плоховато...
да не, терпимо..
0
11485 / 3773 / 677
Регистрация: 13.02.2009
Сообщений: 11,152
06.11.2013, 11:16 5
А разве ексел не открывает csv без всяких танцев с бубном?
Visual Basic
1
Workbooks.Open Filename:="C:\1.csv"
0
6878 / 2810 / 534
Регистрация: 19.10.2012
Сообщений: 8,573
06.11.2013, 11:42 6
Не всегда - у меня например не открывает как было бы нужно, с корректной разбивкой по полям.
Да и с корректной думаю ни у кого не открывает.

Добавлено через 8 минут
Да и например этот файл - там есть поля
2013/12/16;2;88000.00;610.00000;15.10.2013;586.00 000;1.00000
Вероятно есть какой-то смысл в именно таком формате данных - только вот "586.00 000" непонятная штука...
И что Вы получите после открытия файла? Ну если только посмотреть - то может быть и ничего... А если что-то измените и сохраните - это будет уже совершенно другой файл.
0
11485 / 3773 / 677
Регистрация: 13.02.2009
Сообщений: 11,152
06.11.2013, 20:02 7
Ну и вариант автора тоже ничего не изменит при записи в ячейку 610.00000 например.
простой пример:
Visual Basic
1
Cells(1, 1) = "610.00000"
Что бубет в ячейке?
610 если формат был общий.
610.0000 если текстовой
01.09.01 0:00 если дата
и 0:00:00 если время

Добавлено через 8 минут
Не всегда - у меня например не открывает как было бы нужно
Видимо от регинальных настроек зависит, но у меня не открывает с разделителями ",".
А с ";" без проблем. Только перед открытием установить для всего листа формат "текстовой" и всё показывает как есть.
0
3217 / 966 / 223
Регистрация: 29.05.2010
Сообщений: 2,085
06.11.2013, 20:37 8
Цитата Сообщение от Alex77755 Посмотреть сообщение
Видимо от регинальных настроек зависит, но у меня не открывает с разделителями ",".
А с ";" без проблем.
У меня тоже без проблем, за исключением, если 610.0000 число, то записывается как текст "610.0000". Проверял с разделителем "," , все без проблем и число распознается
0
6878 / 2810 / 534
Регистрация: 19.10.2012
Сообщений: 8,573
06.11.2013, 20:48 9
Да в общем это мелочи открывает-неоткрывает.
Главное то, что так пропадают нули, некоторые дробные числа превращаются в даты.
Хотя если открывать через импорт внешних данных и задавать нужные форматы столбцам - то можно добиться ОК
Но что потом, как сохранить, чтоб сравнивая затем эти файлы - разница была например только в том значении, которое правили?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2013, 20:48
Помогаю со студенческими работами здесь

Ошибка при чтении csv
Здравствуйте! Читаю файл: infile = open('scout.csv', 'r') import csv table = for row in...

Удаление пробелов при чтении CSV
Добрый вечер. Помогите люди добрые , не понимаю в чем проблема. Есть у меня cvs файл , в нем 4...

"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла
Пытаюсь разобраться со структурами в бинарных файлах. Допустим, есть массив структур. Записываю...

Как при чтении файла проверить достигнут ли конец файла?
Как при чтении файла проверить достигнут ли конец файла? Dim Red As IO.BinaryReader Red = New...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru