chtenie_csv_v_tablicu_znachenij

Процедура ПрочитатьФайлCSV(ИмяФайла)
				Разделитель     =	",";
				ТабЗн 		= 	новый ТаблицаЗначений;
				
				ЗагружаемыйФайл = 	Новый ТекстовыйДокумент;
				ЗагружаемыйФайл.Прочитать(ИмяФайла); 
				Шапка 			=	ЗагружаемыйФайл.ПолучитьСтроку(1);
				МассивКол 		=	СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Шапка, ",");
				
				Для Каждого ИмяСтолбца Из МассивКол Цикл
					ИмяБезПробелов = СокрЛП(СтрЗаменить(ИмяСтолбца," ",""));
					ИмяБезПробелов = СокрЛП(СтрЗаменить(ИмяБезПробелов,"""",""));
					ТабЗн.Колонки.Добавить(ИмяБезПробелов,,ИмяБезПробелов);
				КонецЦикла;
				
				Для НомерСтроки	=	2 по ЗагружаемыйФайл.КоличествоСтрок() Цикл
					
					Строка 		= ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
					Строка 		= СокрЛП(СтрЗаменить(Строка,"""",""));
					
					МассивКол 	= СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка,Разделитель);
					НоваяСтрочка= ТабЗн.Добавить();
					
					Для НомерСтолбца	=	1 по МассивКол.Количество() Цикл 
						ТекущееЗначение 			= МассивКол[НомерСтолбца-1];
						ИмяКолонки 					= ТабЗн.Колонки[НомерСтолбца-1].Имя;
						НоваяСтрочка[ИмяКолонки]	= СокрЛП(ТекущееЗначение);
					КонецЦикла;
				КонецЦикла;
КонецПроцедуры;
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт
	
	Результат = Новый Массив;
	
	// Для обеспечения обратной совместимости.
	Если ПропускатьПустыеСтроки = Неопределено Тогда
		ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
		Если ПустаяСтрока(Строка) Тогда 
			Если Разделитель = " " Тогда
				Результат.Добавить("");
			КонецЕсли;
			Возврат Результат;
		КонецЕсли;
	КонецЕсли;
	//
	
	Позиция = СтрНайти(Строка, Разделитель);
	Пока Позиция > 0 Цикл
		Подстрока = Лев(Строка, Позиция - 1);
		Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
			Если СокращатьНепечатаемыеСимволы Тогда
				Результат.Добавить(СокрЛП(Подстрока));
			Иначе
				Результат.Добавить(Подстрока);
			КонецЕсли;
		КонецЕсли;
		Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
		Позиция = СтрНайти(Строка, Разделитель);
	КонецЦикла;
	
	Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
		Если СокращатьНепечатаемыеСимволы Тогда
			Результат.Добавить(СокрЛП(Строка));
		Иначе
			Результат.Добавить(Строка);
		КонецЕсли;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции
  • /sites/data/pages/chtenie_csv_v_tablicu_znachenij.txt
  • Последнее изменение: 2021/05/18 14:06
  • tro