Sky1C

Разделы каталога

Товар дняХиты продажПереносы данных 1СПродукты и лицензии 1СПрочий Софт

Информация

О насИнтересноеДоставка и оплатаКонтакты

Работа с Excel в 1С 8 – доступ из 1С к Excel

Работа с Excel в 1С 8

Чтение данных из Excel

Доступ из 1С к Excel производится посредством OLE. Создание COM-объекта: Попытка      Эксель = СоздатьОбъект("Excel.Application"); Исключение      Сообщить(ОписаниеОшибки());      Возврат; КонецПопытки; Теперь используя переменную Эксель можно управлять приложением Excel.
  • Внимание! Microsoft Excel должен быть установлен на компьютере!
Следующая команда откроет книгу:
 Книга = Эксель.WorkBooks.Open(ПутьКФайлу);  
Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:
 Лист = Книга.WorkSheets(НомерЛиста);  
Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя следующую команду:
 КоличествоЛистов = Книга.Sheets.Count;  
Лист можно выбрать по имени листа в книге:
 Лист = Книга.WorkSheets(ИмяЛиста);   
Имя листа в книге можно получить по номеру:
 ИмяЛиста = Книга.Sheets(НомерЛиста).Name;  
Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе: ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:
 Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;  
Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы: Эксель = СоздатьОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(ПутьКФайлу); Лист = Книга.WorkSheets(1); ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; Для Строка = 1 по ВсегоСтрок цикл      для Колонка = 1 по ВсегоКолонок цикл           Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value);      КонецЦикла; КонецЦикла; где ПутьКФайлу - полный путь к файлу книги Excel (включая имя). После выполнения действий необходимо закрыть книгу:
 Эксель.Application.Quit();  

 

Выгрузка данных в Excel

Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Для создания новой книги можно использовать следующий код: Попытка Эксель = СоздатьОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Книга = Эксель.WorkBooks.Add(); При создании книги автоматически создаются листы (по умолчанию 3). Нам остается только выбрать нужный:
 Лист = Книга.WorkSheets(НомерЛиста);  
Или добавить в книгу новый лист:
 Лист = Книга.Sheets.Add();   
Добавим в ячейку на листе значение:
 Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;   
Запишем книгу: Попытка      Книга.SaveAs(ПутьКФайлу); Исключение      Сообщить(ОписаниеОшибки()+" Файл не сохранен!"); КонецПопытки; где ПутьКФайлу - полный путь к файлу книги Excel (включая имя). После выполнения действий необходимо закрыть книгу:
 Эксель.Application.Quit();  
Здесь можно скачать обработку, позволяющую из выбранного файла Excel загрузить данные со всех страниц:  

Часто используемые методы Excel

Эксель.Visible = Видимость; 0 - Excel не виден, 1 - виден.
Книга = Эксель.WorkBooks.Add(); Создание новой книги (файла) Excel.
Книга.SaveAs(ИмяФайла); Сохранение книги Excel.
Лист = Книга.WorkSheets.Add(); Добавление нового листа в книгу.
Книга = Эксель.WorkBooks.Open(ИмяФайла); Открытие существующей книги (файла) Excel.
Лист = Книга.WorkSheets(НомерЛиста); Установка листа в качестве рабочего с номером НомерЛиста.
Лист.Name = ИмяЛиста; Задание рабочему листу имени ИмяЛиста
Лист.PageSetup.Zoom = Масштаб; Задание параметра страницы "Масштаб" (от 10 до 400).
Лист.PageSetup.Orientation = Ориентация; Ориентация: 1 - книжная, 2 - альбомная.
Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры); Задание левой границы (в сантиметрах).
Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры); Задание верхней границы (в сантиметрах).
Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры); Задание правой границы (в сантиметрах).
Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры); Задание нижней границы (в сантиметрах).
Лист.Columns(НомерКолонки).ColumnWidth = Ширина; Задание ширины колонке.
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение; Ввод данных в ячейку.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта; Установка шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта; Установка размера шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный; 1 - жирный шрифт, 0 - нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив; 1 - наклонный шрифт, 0 - нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый; 2 - подчеркнутый, 1 - нет.
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат; Установка формата данных ячейки.
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии; Установка рамок ячейки. 1 - тонкая сплошная.
Лист.Protect(); Установка защиты на лист
Лист.UnProtect(); Снятие защиты с листа
Лист.Cells(Строка, Столбец).Locked=0; Ячейка будет доступной (и после установки защиты на лист)

 

Хитрости Excel

Как выборочно разрешить / запретить редактирование ячеек листа

//Создаем объект EXCEL Эксель = СоздатьОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(ФайлВыгрузки); Лист =Книга.Worksheets("Список сотрудников"); // Выбор листа         Книга.ActiveSheet.UnProtect();    //делаем шаблон незащищенным  // Заполняем лист  ...................................  // Снимаем защиту с области ввода сумм Для Перем = 1 По 10 Цикл          // Прописываем, какие ячейки будут доступными            Книга.ActiveSheet.Cells(Перем, 2).Locked=0; КонецЦикла; Книга.ActiveSheet.Protect();    // ставим защиту на лист Взято с http://programna1c.narod.ru/docs/Excel/Excel1C8.html

Читайте также

Работа с Excel в 1С 8 · Что такое конвертация данных 1С · Терминальный доступ к 1C на КПК, коммуникаторах и iPhone · Загрузка документов из XLS 1С 7.7