Приглашаем посетить
Прутков (prutkov.lit-info.ru)

Учебник по Советы : Из PHP в Excel: работа с COM-объектами : Работа со строками

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

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

В Excel при помощи PHP можно произвести следующие действия со строками:

  • добавить строку;
  • удалить строку;
  • задать высоту одной строки или группы строк;
  • сделать автоподбор высоты одной строки или группы строк;
  • скрыть строку или группу строк;
  • отобразить ранее скрытую строку или группу строк.

    Добавление строки:

    Добавить строку можно при помощи метода Insert() объекта EntireRow():
    <?php
    $xls = new COM("Excel.Application"); // Создаем новый COM-объект
    $xls->Application->Visible = 1;      // Заставляем его отобразиться
    $xls->Workbooks->Add();              // Добавляем новый документ
    
    // Вставляем в 1-ую, 2-ую и 3-ю верхние ячейки значения
    $range=$xls->Range("A1");            // Выбрали ячейку A1
    $range->Value = "1-ая строка";       // Вставили значение
    $range=$xls->Range("A2");            // Выбрали ячейку A2
    $range->Value = "2-ая строка;       // Вставили значение
    $range=$xls->Range("A3");            // Выбрали ячейку A3
    $range->Value = "3-ая строка";       // Вставили значение
    
    // Вставляем строку
    $range=$xls->Range("2:2");           // Определяем место
    $range->EntireRow->Insert();         // Вставляем строку
    ?>
    

    Удаление строки:

    Удаление строки производится при помощи метода Delete() объекта EntireRow():
    <?php
    $xls = new COM("Excel.Application"); // Создаем новый COM-объект
    $xls->Application->Visible = 1;      // Заставляем его отобразиться
    $xls->Workbooks->Add();              // Добавляем новый документ
    
    // Вставляем в 1-ую, 2-ую и 3-ю верхние ячейки значения
    $range=$xls->Range("A1");            // Выбрали ячейку A1
    $range->Value = "1-ая строка";       // Вставили значение
    $range=$xls->Range("A2");            // Выбрали ячейку A2
    $range->Value = "2-ая строка";       // Вставили значение
    $range=$xls->Range("A3");            // Выбрали ячейку A3
    $range->Value = "3-ая строка";       // Вставили значение
    
    // Удаляем строку
    $range=$xls->Range("2:2");           // Определяем строку
    $range->EntireRow->Delete();         // Удаляем ее
    ?>
    

    Задание высоты строки:

    Задать высоту строки можно при помощи свойства RowHeight. Высота задается в миллиметрах.
    В следующем примере для строки "2:2" задается высота 25 мм:
    <?php
    $xls = new COM("Excel.Application"); // Создаем новый COM-объект
    $xls->Application->Visible = 1;      // Заставляем его отобразиться
    $xls->Workbooks->Add();              // Добавляем новый документ
    
    // Изменение высоты строки
    $range=$xls->Range("2:2");           // Выбираем 2-ю строку
    $range->Select();                    // Выделяем ее
    $rowRange=$xls->Selection;           // Определяем $rowRange как выделенный фрагмент
    $rowRange->RowHeight = 25;           // Устанавливаем высоту строки
    ?>
    
    По аналогии можно задать высоту для нескольких строк:
    <?php
    $xls = new COM("Excel.Application"); // Создаем новый COM-объект
    $xls->Application->Visible = 1;      // Заставляем его отобразиться
    $xls->Workbooks->Add();              // Добавляем новый документ
    
    // Изменение высоты строки
    $range=$xls->Range("2:7");           // Выбираем строки со 2-ой по 7-ю
    $range->Select();                    // Выделяем их
    $rowRange=$xls->Selection;           // Определяем $rowRange как выделенный фрагмент
    $rowRange->RowHeight = 25;           // Устанавливаем высоту строк
    ?>
    

    Автоподбор высоты строк:

    Автоподбор высоты строк используется для лучшей читабельности отображенных данных. Т.е. если размер шрифта текста, размещенного в строках, намного меньше высоты строки, или намного больше высоты, то такой текст читать не очень приятно.
    Для автоподбора используется метод AutoFit() объекта Rows:
    <?php
    $xls = new COM("Excel.Application"); // Создаем новый COM-объект
    $xls->Application->Visible = 1;      // Заставляем его отобразиться
    $xls->Workbooks->Add();              // Добавляем новый документ
    
    $range=$xls->Range("B1");            // Задаем 1-ую ячейку
    $range->Font->Size = 20;             // Задаем размер шрифта
    // Выводим в 1-ую выбранную ячейку значение
    $range->Value = "Пример";
    
    $range=$xls->Range("B2");            // Задаем 2-ую ячейку
    $range->Font->Size = 20;             // Задаем размер шрифта
    // Выводим во 2-ую выбранную ячейку значение
    $range->Value = "Пример";
    
    $range=$xls->Range("1:2");            // Задаем для работы 2 строки
    $range->Select();                     // Выделяем эти строки
    $rangeRows=$xls->Selection();         // Задаем $rangeRows как выделенный фрагмент
    $rangeRows->RowHeight = 15;           // Устанавливаем высоту строки = 15 мм
    
    $rowRange=$xls->Range("2:2");         // Выделяем 2-ю строку
    
    $rowRange->Rows->AutoFit();           // Делаем автоподбор высоты
                                          // для третьей строки
    ?>
    
    Т.е. у нас получилось следующее:
    На первую и вторую строку мы записали текст Пример. Шрифт для текста задали 20. Затем установили высоту строк 15, и для второй строки сделали автоподбор высоты. В итоге первая строка отображается некорректно (верхняя часть букв не видна), а вторая нормально.

    Скрытие/отображение строк:

    За визуальное отображение строк отвечает свойство Hidden() объекта EntireRow().
    Если присвоить этому свойству значение True, то выбранные строки будут скрыты, если False, то показаны.
    Следующий пример скроет строки с 5-ой по 10-ую:
    <?php
    $xls = new COM("Excel.Application"); // Создаем новый COM-объект
    $xls->Application->Visible = 1;      // Заставляем его отобразиться
    $xls->Workbooks->Add();              // Добавляем новый документ
    
    $range=$xls->Range("5:10");          // Выбираем строки с 5-ой по 10-ую
    
    $range->EntireRow->Hidden = True;    // Скрыть выбранные строки
    ?>
    

  • Назад Содержание Вперед