Книга знаний

1С:Предприятие / Приемы программирования / OLE, COM

Чтение и запись текущего листа Excel из 1С 7.7

Образец самого простого кода для выгрузки справочника в файл Excel.Автор статьи: romix | Редакторы: FN
Последняя редакция №9 от 07.03.14 | История
URL: http://kb.mista.ru/article.php?id=410

Ключевые слова: Excel, выгрузка, загрузка, справочник, таблица, данные


Выгрузка информации в Excel



////////////////////////////////////////////////////////
Процедура Выгрузить_в_Excel()
    xl=СоздатьОбъект("Excel.Application");
    xl.Workbooks.Add(); //Добавляем новый документ
    xl.Visible=1; //Делаем его видимым

    row=1; //первая строка
    спр=СоздатьОбъект("Справочник.Контрагенты");
    спр.ВыбратьЭлементы();
    Пока спр.ПолучитьЭлемент() = 1 Цикл
        xl.Cells(row,1).Value=спр.Код;
        xl.Cells(row,2).Value=спр.Наименование;
        row=row+1;//переходим на следующую строку
    КонецЦикла;
КонецПроцедуры



Загрузка информации из Excel



////////////////////////////////////////////////////////
Процедура Загрузить_из_Excel()
    //В одной транзакции запись элементов в базе DBF пойдет намного быстрее
    НачатьТранзакцию(); 

    xl=СоздатьОбъект("Excel.Application");
    //Получаем область с заполненными данными
    UsedRange=xl.ActiveSheet.UsedRange; 
    //число строк в этой области
    rows=UsedRange.Rows.Count; 
    спр=СоздатьОбъект("Справочник.Контрагенты");

    //цикл по строкам 
    Для row = 1 По rows Цикл 
        //читаем строку из ячейки Excel (значения должны располагаться в первой колонке) 
        имя=СокрЛП(UsedRange.Cells(row,1).Value);

        //показываем пользователю прогресс в строке состояния
        Состояние(""+row+"/"+rows+"  "+имя);  
        Если имя="" Тогда
            Продолжить; //пустые значения не создаем
        КонецЕсли;

        Если спр.НайтиПоНаименованию(имя, 0, 1)=0 Тогда 
        //если элемент с таким наименованием не найден, то создаем его
            спр.Новый();
            спр.Наименование=имя;
            спр.Записать();
        КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
КонецПроцедуры


Ускорение вывода в Excel


Для ускорения вывода информации в Excel можно отключить обновление экрана.
    xl.ScreenUpdating = 0;
    xl.EnableEvents = 0;
    xl.Visible = 0;

Затем, когда таблица будет сформирована, вновь включить обновление экрана.
    xl.ScreenUpdating = 1;
    xl.EnableEvents = 1;
    xl.Visible = 1;


См. также: Книга знаний: Чтение текущего листа Excel из 1С 8.2

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2024 | Mista.ru

Яндекс.Метрика