Приглашаем посетить
Рефераты (referat-lib.ru)

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

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

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

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

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

    Добавление колонки:

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

    Удаление колонки:

    Удаление колонки производится при помощи метода Delete() объекта EntireColumn():
    <?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("B1");            // Выбрали ячейку B1
    $range->Value = "2-ая колонка";      // Вставили значение
    $range=$xls->Range("C1");            // Выбрали ячейку C1
    $range->Value = "3-ая колонка";      // Вставили значение
    
    // Удаляем колонку
    $range=$xls->Range("B:B");           // Определяем коноку
    $range->EntireColumn->Delete();      // Удаляем ее
    ?>
    

    Задание ширины колонки:

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

    Автоподбор ширины колонок:

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

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

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

    Установка ширины для всех колонок:

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

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