Работа с 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