Warning: include() [function.include]: URL file-access is disabled in the server configuration in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/sovet_excel_table.php on line 23

Warning: include(http://altcode.ru/include/style.php) [function.include]: failed to open stream: no suitable wrapper could be found in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/sovet_excel_table.php on line 23

Warning: include() [function.include]: Failed opening 'http://altcode.ru/include/style.php' for inclusion (include_path='.:') in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/sovet_excel_table.php on line 23

ALTCODE

Программирование - ALTCODE.ru   Все о языках программирования.

Assembler |  C  |  C++ |  Visual C++ |  C++ Builder |  C# |  Pascal |  Delphi |  BASIC |  Visual Basic |  Visual Basic .NET 
Java |  Perl |  Visual FoxPro |  Ruby |  PHP |  MySQL 
 Главная / PHP / Справочник по PHP (краткий)
Главная
Карта сайта
Наши партнеры
Контакты

<< предыдущая | в начало | следующая >>



Из PHP в Excel: работа с COM-объектами : Рисование таблиц

Общие возможности:

В 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.

    Пример формирования таблички в Excel при помощи PHP (как будут выглядеть линии при различных значениях свойств LineStyle и Weight):

    <?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.
    Принцып действия:
    Удаляет в выбранном диапазоне все границы, рамки и т.д.

    Как реализовать:
    Задаем для всех стенок и внутренних линий стиль отображения: отсутствуют (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;
    
    // ..... какие-то дальнейшие действия .....
    ?>
    


  • << предыдущая | в начало | следующая >>






    Warning: include() [function.include]: URL file-access is disabled in the server configuration in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/sovet_excel_table.php on line 400

    Warning: include(http://altcode.ru/include/banners.php) [function.include]: failed to open stream: no suitable wrapper could be found in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/sovet_excel_table.php on line 400

    Warning: include() [function.include]: Failed opening 'http://altcode.ru/include/banners.php' for inclusion (include_path='.:') in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/sovet_excel_table.php on line 400