Чтение и запись текущего листа Excel из 1С 7.7 Ключевые слова: 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");
//число строк на листе Excel
rows=xl.ActiveSheet.UsedRange.Rows.Count;
спр=СоздатьОбъект("Справочник.Контрагенты");
//цикл по строкам
Для row = 1 По rows Цикл
//читаем строку из ячейки Excel (значения должны располагаться в первой колонке)
имя=СокрЛП(xl.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 |