Tuesday, February 7, 2012

Быстрая обработка файлов excel в 1С

Если необходимо что то быстро загрузить с excel то предлагаю использовать следующую обработку, дальнейшую логику уже заполняйте в зависимости от процессов.
Процедура ОбработатьФайл()
 
 ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
 ДиалогОткрытияФайла.МножественныйВыбор=Ложь;
 ДиалогОткрытияФайла.Фильтр = "*.xls|*xls";
 Если ДиалогОткрытияФайла.Выбрать() тогда
  conn = NEW COMObject("ADODB.Connection");
  
  
  СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+ДиалогОткрытияФайла.ПолноеИмяФайла;
  СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";";
  
  conn.Open(СтрокаПодключения);
  
  MyRst = Новый COMОбъект ("ADODB.Recordset");
  
  MyCat=Новый COMОбъект ("ADOX.Catalog"); 
  MyCat.ActiveConnection = conn; 
  Для Каждого ЛистЕ из MyCat.Tables Цикл
   If ЛистЕ.Type = "TABLE" then
    MyStr = "select * from ["+ЛистЕ.Name+"]";
    MyRst.Open (MyStr, conn, 2, 3);//adOpenDynamic, adLockOptimistic 
    MyRst.MoveNext();
    Пока НЕ MyRst.EOF() Цикл
     Код =  MyRst.Fields("F2").Value;
     
     Сообщить(Код);
     
     
     MyRst.MoveNext();    
    КонецЦикла;
    MyRst.Close();
    
   endif;
  КонецЦикла;
  conn.Close();
 КонецЕсли;
 
КонецПроцедуры 

No comments:

Post a Comment