среда, 20 февраля 2013 г.

Пример чтения Excel из 1с 7.7

1с чтение Excel.

Пример использования 1с 7.7 для чтения данных из Excel:

Excel = СоздатьОбъект("Excel.Application");
    НовыеРабочиеКниги= Excel.Workbooks;  
    Попытка
        РабочаяКнига=НовыеРабочиеКниги.Open(Файл);  
    Исключение
        Предупреждение("Ошибка при открытии файла загрузки!",15);
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    ОкноExcel=РабочаяКнига.WorkSheets(1);


    Ряд=12;//Начальная строка чтения -1   
    Пока КоличествопустыхСтрок=0 Цикл
        Ряд=Ряд+1;//это строка  
       
        Ячейка = ОкноExcel.Cells(Ряд, 2);  // Проверка окончания
        Если Найти(Нрег(СокрЛП(Строка(Ячейка.Value))),"выход")>0 Тогда
            Прервать;//Это последняя строка
        КонецЕсли; 
       
        Ячейка = ОкноExcel.Cells(Ряд, 1);  // Код Материала
        Код = СокрЛП(Строка(Ячейка.Value));
       
        Если ПустаяСтрока(Код)=1 Тогда
            Продолжить;
        КонецЕсли;      
          
    КонецЦикла;
   
    НовыеРабочиеКниги.Close();
    ОкноExcel = "";   
    Попытка
        РабочаяКнига.Close(-1); //Если такой файл открыт, то закрываем его без сохранения       
    Исключение
        //Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Excel.Quit();

Хотя мне больше нравиться так:

...
Excel = СоздатьОбъект("Excel.Application");
    НовыеРабочиеКниги= Excel.Workbooks;
    Попытка
        РабочаяКнига=НовыеРабочиеКниги.Open(Файл);
    Исключение
        Предупреждение("Ошибка при открытии файла загрузки!",15);
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
   
    ОкноExcel            =РабочаяКнига.WorkSheets(1);

    ActiveCell          = ОкноExcel.Cells(1,1).SpecialCells(11);
    КоличествоСтрок     = ActiveCell.Row;       
  
    Для Сч = ЗагрузитьСтрокиС по КоличествоСтрок Цикл
      
        Если ЗагрузитьСтрокиПо<>0 Тогда
            Если сч>ЗагрузитьСтрокиПо Тогда
                Прервать;
            КонецЕсли;
        КонецЕсли;
      
      
        Код77 = Строка(ОкноExcel.Cells(Сч, КолонкаКод77).Value);
...