Каталог решений - Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

В наличии

Чтение строк файла CSV в список значений с помощью метода ИзСтрокиСРазделителями

Категория:

Описание

Возникла необходимость написать загрузку данных из клиент-банка в 1с 7.7. Файла формата CSV (iBank2)

И поскольку надо было «очень быстро»  (как это не редко бывет Smile) родилась вот такая функция.

Решил ею поделится т.к. кода очень немного (собственно ключевые всего 3 строки):

        ТекСтрока = СтрЗаменить(ТекСтрока,«»»»,«‘»);
        ТекСтрока = «»»» + СтрЗаменить(ТекСтрока,РазделительВФайле ,«»»,«»») + «»»»;
        спЗначений.ИзСтрокиСРазделителями(ТекСтрока);

а кому-то может пригодится как раз когда нужно будет «очень быстро»

Единственное — двойные кавычки » будут заменены на одинарные ‘.

Но если это не критично то код можно использовать.

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

      
        // Длальше уже обрабатываем как кому нужно
        Стр = "";
        Для Ном = 1 По спЗначений.РазмерСписка() Цикл
            Сообщить(спЗначений.ПолучитьЗначение(Ном, Стр));
        КонецЦикла;   
    КонецЦикла;
КонецФункции

has been added to your cart:
Оформление заказа