CSV в одну строку - разбить на много строк
☑
0
ac13
20.02.18
✎
10:27
В файле CSV одна сплошная строка.
Страна;Город;Улица;Дом;Россия;Рязань;Белинского;180;Россия;Рязань;Гагарина;25;Россия;Рязань;Дружная;111;
Нужно загрузить файл и соответственно по колонкам. Как при встрече значения, например, Россия, перейти на следующую строку?
1
VladZ
20.02.18
✎
10:28
СтрЗаменить(ИсходнаяСтрока, СтрокаПоиска, СтрокаЗамены)
2
ildary
20.02.18
✎
10:30
(0)
Функция ПрочитатьФайлCSV( ИмяФайла ) Экспорт
// УЧИТЫВАЯ СЕРВЕРНОСТЬ ФУНКЦИИ - путь к файлу должен быть СЕТЕВОЙ!
ТЗ = Новый ТаблицаЗначений;
Файл = Новый ЧтениеТекста( ИмяФайла );
Шапка = Файл.ПрочитатьСтроку(); //заголовок
МассивКол = СтрРазделить( Шапка, ";", Ложь );
Для Каждого ИмяСтолбца Из МассивКол Цикл
ИмяБезПробелов = СтрЗаменить( ИмяСтолбца, " ", "" );
ТЗ.Колонки.Добавить( ИмяБезПробелов,, ИмяСтолбца );
КонецЦикла;
Стр = Файл.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Стр = СтрЗаменить( Стр, " ; ", ";" ); //при выгрузке могут быть лишние пробелы
МассивКол = СтрРазделить( Стр, ";", Истина );
СтрокаТЗ = ТЗ.Добавить();
Если МассивКол.Количество() <> ТЗ.Колонки.Количество() Тогда //Продолжить
Продолжить; // скорее всего в тексте содержит разделитель
КонецЕсли;
Для НомерСтолбца= 1 по МассивКол.Количество() Цикл //заполняем строчку значениями
ТекущееЗначение = МассивКол[ НомерСтолбца - 1 ];
ИмяКолонки = ТЗ.Колонки[ НомерСтолбца - 1 ].Имя;
СтрокаТЗ[ ИмяКолонки ] = СокрЛП( ТекущееЗначение );
КонецЦикла;
Стр = Файл.ПрочитатьСтроку();
КонецЦикла;
Файл.Закрыть();
Возврат ТЗ;
КонецФункции
3
Timon1405
20.02.18
✎
10:31
(1)+СтрЗаменить(ИсходнаяСтрока, ";Россия",Символы.ПС+"Россия")
4
ac13
20.02.18
✎
10:31
(1) (2) (3) Спасибо!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший