Советы по PHP : Из PHP в Excel: работа с COM-объектами : Работа со строками
Материал из Справочник Web-языков.
Содержание |
[править] Общие возможности
В 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 = "Справочник Web-языков: www.spravkaweb.ru";
$range=$xls->Range("B2"); // Задаем 2-ую ячейку
$range->Font->Size = 20; // Задаем размер шрифта
// Выводим во 2-ую выбранную ячейку значение
$range->Value = "Справочник Web-языков: www.spravkaweb.ru";
$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(); // Делаем автоподбор высоты
// для третьей строки
?>
Т.е. у нас получилось следующее:
На первую и вторую строку мы записали текст Справочник Web-языков: www.spravkaweb.ru. Шрифт для текста задали 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; // Скрыть выбранные строки
?>