Советы по PHP : Из PHP в Excel: работа с COM-объектами : Рисование таблиц
Материал из Справочник Web-языков.
[править] Общие возможности
В Excel при помощи PHP можно делать следующие операции с таблицами:
- задать толщину и стиль линий бордюра таблицы;
- задать толщину и стиль линий внутренней сетки таблицы;
- установить цвет бордюра и внутренней сетки таблицы;
[править] Работа с таблицей
Все свойства таблицы находятся в объекте Borders(). Вернее не в объекте, а в массиве объектов Borders[]. Каждый элемент этого массива отвечает за определенную часть таблицы (верхняя граница таблицы, нижняя, внутренние линии и т.д.). А уже у каждого элемента массива есть свои свойства, которые определяются только для данного объекта.
Таким образом если мы хотим нарисовать табличку с жирным внешним бордюром синего цвета и тонкими внутренними линиями красного цвета, то должны выполнить следующий код:
<?php
$xls = new COM("Excel.Application"); // Создаем новый COM-объект
$xls->Application->Visible = 1; // Заставляем его отобразиться
$xls->Workbooks->Add(); // Добавляем новый документ
// Задаем область таблицы
$range=$xls->Range("B2:E10");
// Выделяем ее
$range->Select();
// Присваиваем переменной $range выделенный фрагмент
$range=$xls->Selection();
// Задаем свойства левой стенки таблицы
$rangeBordersLeft=$range->Borders("7");
$rangeBordersLeft->LineStyle = 1;
$rangeBordersLeft->Weight = 3;
$rangeBordersLeft->ColorIndex = 5;
// Задаем свойства верхней стенки таблицы
$rangeBordersTop=$range->Borders("8");
$rangeBordersTop->LineStyle = 1;
$rangeBordersTop->Weight = 3;
$rangeBordersTop->ColorIndex = 5;
// Задаем свойства нижней стенки таблицы
$rangeBordersBottom=$range->Borders("9");
$rangeBordersBottom->LineStyle = 1;
$rangeBordersBottom->Weight = 3;
$rangeBordersBottom->ColorIndex = 5;
// Задаем свойства правой стенки таблицы
$rangeBordersRight=$range->Borders("10");
$rangeBordersRight->LineStyle = 1;
$rangeBordersRight->Weight = 3;
$rangeBordersRight->ColorIndex = 5;
// Задаем свойства внутренних вертикальных линий
$rangeBordersVertical=$range->Borders("11");
$rangeBordersVertical->LineStyle = 1;
$rangeBordersVertical->Weight = 2;
$rangeBordersVertical->ColorIndex = 3;
// Задаем свойства внутренних горизонтальных линий
$rangeBordersHorizontal=$range->Borders("12");
$rangeBordersHorizontal->LineStyle = 1;
$rangeBordersHorizontal->Weight = 2;
$rangeBordersHorizontal->ColorIndex = 3;
?>
Т.е. сначало берется левая стенка таблицы
$rangeBordersLeft=$range->Borders("7");
Для нее задаются: тип линии (сплошная),
$rangeBordersLeft->LineStyle = 1;
толщина линии (жирная),
$rangeBordersLeft->Weight = 3;
цвет линии (синий)
$rangeBordersLeft->ColorIndex = 5;
Аналогично мы поступаем для правой, верхней, нижней стенок. Для внутренних вертикальных линий
$rangeBordersVertical=$range->Borders("11");
и внутренних горизонтальных линий
$rangeBordersHorizontal=$range->Borders("12");
задаем тип линий - сплошная, толщина линий - обычная, цвет линий - красный:
$rangeBordersVertical->LineStyle = 1;
$rangeBordersVertical->Weight = 2;
$rangeBordersVertical->ColorIndex = 3;
и
$rangeBordersHorizontal->LineStyle = 1;
$rangeBordersHorizontal->Weight = 2;
$rangeBordersHorizontal->ColorIndex = 3;
Свойство LineStyle() (тип линии) может принимать значения от 1 до 13, а свойство Weight (толщина) может принимать значения от 1 до 4.
Как будут выглядеть линии при различных значениях свойств LineStyle и Weight показано в следующей таблице:
Пример формирования такой таблички в Excel при помощи PHP:
<?php
$xls = new COM("Excel.Application"); // Создаем новый COM-объект
$xls->Application->Visible = 1; // Заставляем его отобразиться
$xls->Workbooks->Add(); // Добавляем новый документ
// Задаем для всего диапазона: выравнивание по центру
// размер шрифта: 8
// ширина колонок: 12
$range=$xls->Range("A1:E14");
$range->HorizontalAlignment = 3;
$range->Font->Size = 8;
$range->ColumnWidth = 12;
// Формируем "шапку"
$range=$xls->Range("A1");
$range->Font->Bold = true;
$range->Value = "LineStyle";
$range=$xls->Range("B1");
$range->Font->Bold = true;
$range->Value = "Weight = 1";
$range=$xls->Range("C1");
$range->Font->Bold = true;
$range->Value = "Weight = 2";
$range=$xls->Range("D1");
$range->Font->Bold = true;
$range->Value = "Weight = 3";
$range=$xls->Range("E1");
$range->Font->Bold = true;
$range->Value = "Weight = 4";
// Для каждого столбца выводим нижний бордюр ячейки
// с соответствующими значениями свойств LineStyle и Width
for($i=1;$i<=13;$i++) {
$range=$xls->Range("A".($i+1));
$range->Value = "LineStyle = $i";
$range=$xls->Range("B".($i+1));
$rangeBordersRight=$range->Borders("9");
$rangeBordersRight->LineStyle = $i;
$rangeBordersRight->Weight = 1;
};
for($i=1;$i<=13;$i++) {
$range=$xls->Range("C".($i+1));
$rangeBordersRight=$range->Borders("9");
$rangeBordersRight->LineStyle = $i;
$rangeBordersRight->Weight = 2;
};
for($i=1;$i<=13;$i++) {
$range=$xls->Range("D".($i+1));
$rangeBordersRight=$range->Borders("9");
$rangeBordersRight->LineStyle = $i;
$rangeBordersRight->Weight = 3;
};
for($i=1;$i<=13;$i++) {
$range=$xls->Range("E".($i+1));
$rangeBordersRight=$range->Borders("9");
$rangeBordersRight->LineStyle = $i;
$rangeBordersRight->Weight = 4;
};
?>
Для закрепления материала рассмотрим как осуществить на PHP формирование границ таблицы на примере некоторых стандратных средств Excel.