Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями
Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями
- Описание
- Подробнее
Описание
Возникла необходимость написать загрузку данных из клиент-банка в 1с 7.7. Файла формата CSV (iBank2)
И поскольку надо было «очень быстро» (как это не редко бывет
) родилась вот такая функция.
Решил ею поделится т.к. кода очень немного (собственно ключевые всего 3 строки):
ТекСтрока = СтрЗаменить(ТекСтрока,«»»»,«‘»);
ТекСтрока = «»»» + СтрЗаменить(ТекСтрока,РазделительВФайле ,«»»,«»») + «»»»;
спЗначений.ИзСтрокиСРазделителями(ТекСтрока);
а кому-то может пригодится как раз когда нужно будет «очень быстро»
Единственное — двойные кавычки » будут заменены на одинарные ‘.
Но если это не критично то код можно использовать.
Функция ЧтениеФайлаCSV(Путь)
ТекстФайла = СоздатьОбъект("Текст");
Попытка
ТекстФайла.Открыть(Путь);
Исключение
Предупреждение("Ошибка отрытия файла " + Путь);
Возврат "";
КонецПопытки;
РазделительВФайле = ";";
спЗначений = СоздатьОбъект("СписокЗначений");
Для НомСтр=1 по ТекстФайла.КоличествоСтрок() Цикл
ТекСтрока = ТекстФайла.ПолучитьСтроку(НомСтр);
// Найдем и заменим в строке символ " на символ ' чтобы при замене разделителей не было ошибки
// т.о. из строки вида:
// 123;"ООО "МММ" ";Кафе "Пирожок"
// получим:
// 123;'ООО 'МММ' ';Кафе 'Пирожок'
ТекСтрока = СтрЗаменить(ТекСтрока,"""","'");
// добавим в начало и конец строки символ " и заменим разделитель используемый в файле CSV на ","
// т.о. из:
// 123;'ООО 'МММ' ';Кафе 'Пирожок'
// получаем:
//"123","'ООО 'МММ' '","Кафе 'Пирожок'"
ТекСтрока = """" + СтрЗаменить(ТекСтрока, РазделительВФайле ,""",""") + """";
// а это уже методом ИзСтрокиСРазделителями можно превратить в список
спЗначений.ИзСтрокиСРазделителями(ТекСтрока);
// Длальше уже обрабатываем как кому нужно
Стр = "";
Для Ном = 1 По спЗначений.РазмерСписка() Цикл
Сообщить(спЗначений.ПолучитьЗначение(Ном, Стр));
КонецЦикла;
КонецЦикла;
КонецФункции

