Работа с таблицей:
Все свойства таблицы находятся в объекте 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 показано в следующей таблице:
LineStyle |
Weight = 1 |
Weight = 2 |
Weight = 3 |
Weight = 4 |
LineStyle = 1 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 2 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 3 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 4 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 5 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 6 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 7 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 8 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 9 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 10 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 11 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 12 |
![]() |
![]() |
![]() |
![]() |
LineStyle = 13 |
![]() |
![]() |
![]() |
![]() |
<?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 и Widthfor($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.

![]() |
Принцып действия: Удаляет в выбранном диапазоне все границы, рамки и т.д. Как реализовать: Задаем для всех стенок и внутренних линий стиль отображения: отсутствуют (LineStyle = Null) Код: <?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(); // Задаем свойства для всей таблицы$rangeDiagonalDown=$range->Borders("5");$rangeDiagonalDown->LineStyle = Null;$rangeDiagonalUp=$range->Borders("6");$rangeDiagonalUp->LineStyle = Null;$rangeBordersLeft=$range->Borders("7");$rangeBordersLeft->LineStyle = Null;$rangeBordersTop=$range->Borders("8");$rangeBordersTop->LineStyle = Null;$rangeBordersBottom=$range->Borders("9");$rangeBordersBottom->LineStyle = Null;$rangeBordersRight=$range->Borders("10");$rangeBordersRight->LineStyle = Null;$rangeBordersVertical=$range->Borders("11");$rangeBordersVertical->LineStyle = Null;$rangeBordersHorizontal=$range->Borders("12");$rangeBordersHorizontal->LineStyle = Null; // ..... какие-то дальнейшие действия .....?> |
![]() |
Принцып действия: Рисует нижний бордюр выделенного фрагмента сплошной линией одинарной толщины. Как реализовать: Задаем для нижнего бордюра стиль линии: сплошная (LineStyle = 1), толщина: одинарная (Weight = 2) Код: <?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(); // Задаем свойства для нижней стенки таблицы$rangeBordersBottom=$range->Borders("9");$rangeBordersBottom->LineStyle = 1;$rangeBordersBottom->Weight = 2; // ..... какие-то дальнейшие действия .....?> |
![]() |
Принцып действия: Рисует левый бордюр выделенного фрагмента сплошной линией одинарной толщины. Как реализовать: Задаем для левого бордюра стиль линии: сплошная (LineStyle = 1), толщина: одинарная (Weight = 2) Код: <?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 = 2; // ..... какие-то дальнейшие действия .....?> |
![]() |
Принцып действия: Рисует правый бордюр выделенного фрагмента сплошной линией одинарной толщины. Как реализовать: Задаем для правого бордюра стиль линии: сплошная (LineStyle = 1), толщина: одинарная (Weight = 2) Код: <?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(); // Задаем свойства для правой стенки таблицы$rangeBordersRight=$range->Borders("10");$rangeBordersRight->LineStyle = 1;$rangeBordersRight->Weight = 2; // ..... какие-то дальнейшие действия .....?> |
![]() |
Принцып действия: Рисует нижний бордюр выделенного фрагмента сплошной двойной линией. Как реализовать: Задаем для нижнего бордюра стиль линии: двойная (LineStyle = 9), толщина: Weight = 4 Код: <?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(); // Задаем свойства для правой стенки таблицы$rangeBordersRight=$range->Borders("10");$rangeBordersRight->LineStyle = 9;$rangeBordersRight->Weight = 4; // ..... какие-то дальнейшие действия .....?> |
![]() |
Принцып действия: Рисует нижний бордюр выделенного фрагмента сплошной линией двойной толщины. Как реализовать: Задаем для нижнего бордюра стиль линии: одинарная (LineStyle = 1), толщина: Weight = 3 Код: <?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(); // Задаем свойства для правой стенки таблицы$rangeBordersRight=$range->Borders("10");$rangeBordersRight->LineStyle = 1;$rangeBordersRight->Weight = 3; // ..... какие-то дальнейшие действия .....?> |