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