Работа с Excel через COM

Несколько примеров работы с excel (ms office 2010, в моем случае) через COM.

Выходной файл имеет вид:

Работа с файлом:

Excel = Новый COMОбъект("Excel.Application"); //подключение к Excel
Книга = Excel.WorkBooks.Add();  //добавление книги
Лист = Книга.Worksheets.add(); //добавление листа
Лист.Name = "ГЛАВНАЯ"; //имя листа (без проблелов)
Лист.Tab.ColorIndex = 3; //цвет ярлыка

(цвет брал с этой картинки что ниже, в терминалогии не силен что это за значения)

            

Excel.displayAlerts = 0; //отключить модальное окно Excel на перезапись файла
Книга.SaveAs(C:excel.xlsx); //сохранения файла
Книга.Close(); //закрытие книги
Excel.Quit(); //закрытие COM

Заполнение файла:

Ячейка = Лист.Cells(2, 2); //получение ячейки в переменную
Ячейка.ColumnWidth = 70; //ширина полученной ячейки
Ячейка.RowHeight  = 100; //высота полученной ячейки
Ячейка.Borders.LineStyle = 1; //обводка ячейки         

 

//++ добавим изображение на лист
Верх = Ячейка.Top;
Лево = Ячейка.Left;
ВысотаКартинки = 100;
ШиринаКартинки = 372;
Лист.Shapes.AddPicture(C:\image.png, Ложь, Истина, Лево, Верх, ШиринаКартинки, ВысотаКартинки);
//-- добавим изображение на лист

 

Ячейка.Cells.Font.Size = 16; //размер шрифта
Ячейка.Cells.Font.Bold = 1; //жирный шрифт
Ячейка.Cells.Font.Name = "Arial"; //наименование шрифта
Ячейка.HorizontalAlignment = -4108; //текст по центру
Ячейка.Columns.AutoFit(); //авот ширина ячейки
Ячейка.Cells.Interior.Color = 255; //цвет фона красный
//.Color = 255 = ниже картинка

                                   

 

Ячейка.Value = "Текст"; //присвоить значение ячейки
Ячейка.Cells.Font.ColorIndex = 3; //цвет текста ячейки (см. выше таблиу цветов)
Ячейка.VerticalAlignment = 2; // Выровнять текст по центру (относительно верхнего края и нижнего).
Ячейка.HorizontalAlignment = 3; // Выровнять текст по середине (относительно левой границы ячейки и правой).
Ячейка.WrapText = 1; //перенос текста в ячейке
Ячейка.Hyperlinks.Add(Ячейка, https://url.com,"" , https://url.com ,  ); // ссылка в интернет
Ячейка.Hyperlinks.Add(Ячейка, "", ИмяЛиста+"!"+Ячейка.AddressLocal, Ячейка.Value,Ячейка.Value);//ссылка на ячейку в другом листе

//++ зафиксировать строку
ТекКнига = Книга.WorkSheets(ИмяЛиста);
Excel.ActiveWindow.SplitRow = 4;//Указываем строку по которую фиксируем шапку
Excel.ActiveWindow.FreezePanes = 1;//Активизируем фиксацию
//-- зафиксировать строку


 

Ячейка = Лист.Range(Лист.Cells(1,1),Лист.Cells(2,8));
Ячейка.Merge(); //объединение ячеек
Ячейка.RowHeight  = 60; //высота объединенной ячейки

 

//++ изображение со ссылкой на страницу
Верх = Ячейка.Top+3;
Лево = Ячейка.Left+145;
ВысотаКартинки = 55;
ШиринаКартинки = 140;
Изображение = Лист.Shapes.AddPicture(C:\image.png, Истина, Истина, Лево, Верх, ШиринаКартинки, ВысотаКартинки);
Лист.Hyperlinks.Add(Изображение, , "ГЛАВНАЯ!R1C");
//-- изображение со ссылкой на страницу

 

//Excel = COM Excel
//ИмяЛиста = (Строка) имя листа без пробелов
Функция ДобавитьЛистПоИмени(Excel, ИмяЛиста)

НомерПоследнегоЛиста = Excel.WorkSheets.Count;
ДобавленныйЛист = Excel.WorkSheets.Add(,Excel.WorkSheets(НомерПоследнегоЛиста));
ДобавленныйЛист.Name = ИмяЛиста;

Возврат ДобавленныйЛист; //добавленный новый лист с нужным именем

КонецФункции

//Excel = COM Excel
Процедура СкрытьЛистыПоУмолчанию(Excel)

//скрыть листы по умолчанию (т.е. Лист1, Лист2, Лист3) - Excel сам автоматически добавляет эти листы
КоличествоЛистов = Excel.ActiveWorkbook.Worksheets.Count;
КоллекцияЛистов = Excel.ActiveWorkbook.Worksheets;


Для ТекНомерЛиста = 1 По КоличествоЛистов  Цикл
ТекЛист = Excel.ActiveWorkbook.Worksheets(ТекНомерЛиста);
Если Найти(ТекЛист.Name, "Лист") <> 0 Тогда
ТекЛист.Visible = False;
КонецЕсли;
КонецЦикла;

КонецПроцедуры                        

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *