Каталог решений - Чтение CSV (быстрое)

Чтение CSV (быстрое)

Чтение CSV (быстрое)

В наличии

Почему то из гугла до сих пор нет ссылки на код процедуры быстро читающей csv…
Загрузка из файла CSV c помощью ADODB.Connection провайдера Microsoft.Jet.OLEDB.

Категория:

Описание

По мотивам…

Чтение данных csv файла с помощью ADODB.Connection

  &НаСервереБезКонтекста
  Функция ПрочитатьCSVвТЗ_ADO(ИмяФайла, Разделитель=";", ЗаголовкиИзПервойСтроки = Ложь)
  	ТаблицаРезультат = Новый ТаблицаЗначений;
  	Файл = Новый Файл(ИмяФайла);
  	
  	Connection=Новый COMОбъект("ADODB.Connection");
  	Connection.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Файл.Путь+";Extended Properties=""text;HDR=No;IMEX=1;FMT=Delimited""");
  
  	// Так как FMT=Delimited(;) не работает создадим schema.ini 
  	Схема = СтрШаблон("[%1]
  		|ColNameHeader=%2
  		|Format=Delimited(%3)", Файл.Имя, Формат(ЗаголовкиИзПервойСтроки, "БЛ=False; БИ=True"), Разделитель);
  	ФайлСхемы = Новый ТекстовыйДокумент;
  	ФайлСхемы.УстановитьТекст(Схема);
  	ФайлСхемы.Записать(Файл.Путь + "Schema.ini", "CESU-8"); // UTF-8 без BOM
  	
  	RecordSet=Новый COMОбъект("ADODB.Recordset");
  	RecordSet.ActiveConnection = Connection;
  	
  	RecordSet.Open("select * from "+Файл.Имя, Connection);
  	
  	// определим имена колонок
  	Для НомерКолонки = 0 по RecordSet.Fields.Count-1 Цикл
  		ТаблицаРезультат.Колонки.Добавить(RecordSet.Fields(НомерКолонки).Name);
  	КонецЦикла;
  	
  	Сч=0;
  	Пока НЕ RecordSet.EOF() Цикл
  		Сч=Сч+1;
  		
  		НоваяСтрока = ТаблицаРезультат.Добавить();
  		Для й=0 по RecordSet.Fields.Count-1 Цикл
  			НоваяСтрока[й] = RecordSet.Fields(й).Value;
  		КонецЦикла;
  		
  		RecordSet.MoveNext();
  	КонецЦикла;
  	
  	RecordSet.Close();
  	Connection.Close();
  	Возврат ТаблицаРезультат;
  КонецФункции
 

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