Иногда возникает необходимость генерировать документы MS Office для веб ресурсы, используя динамические данные. Например, это может быть генерация Excel отчетов из нескольких таблиц MySQL. Для этого используются свойства и методы COM.
Технология COM имеет много недостатков, в том числе и поддержка только платформы Windows, и не самую большую скорость работы. Тот же CSV работает быстрее, но в нем невозможно выполнить все необходимые операции по форматированию документов, которые предоставляет технология COM.
1. Создание документа MS Word
< ?php
//создаем новый объект COM – word.application
$word = new COM("word.application");
//выводим версию MS Word
echo "I'm using MS Word {$word->Version}";
//Скрываем приложение MS Word
$word->Visible = 0;
//Создаем новый документ
$word->Documents->Add();
//Устанавливает отступы в документе
$word->Selection->PageSetup->LeftMargin = '2"';
$word->Selection->PageSetup->RightMargin = '2"';
//Задаем установки шрифта
$word->Selection->Font->Name = 'Verdana';
$word->Selection->Font->Size = 8;
//Пишем текст документа
$word->Selection->TypeText("Hello, universe!");
//Сохраняем документ
$word->Documents[1]->SaveAs("C:hello2.doc");
//Завершает работу с MS Word и освобождаем память
$word->quit();
$word->Release();
$word = null;
?>
Метод Release() иногда может вызвать ошибку
Fatal error: Uncaught exception 'com_exception' with message...
которая в большинстве случаев означает, что экземпляр COM объекта не был закрыт. Поэтому вместо строк
$word->Release(); $word = null;
можно использовать сроку
unset($word)
2. Создание документа MS Excel
< ?php
//создаем новый объект COM – excel.application
$excel = new COM("excel.application");
// Скрываем приложение MS Excel
$excel->Visible = 0;
//Создаем новую книгу
$wkb = $excel->Workbooks->Add();
$sheet = $wkb->Worksheets(1);
//Выбираем активный лист и устанавливаем курсов в область ячейки (2, 4)
$sheet->activate;
$cell = $sheet->Cells(2,4);
$cell->Activate;
//Записываем в ячейку текст
$cell->value = 'Test';
//Сохраняем документ
$wkb->SaveAs("C:excel123.xls");
//Завершаем работу с MS Excel
$wkb->Close(false);
$excel->Workbooks->Close();
$excel->Quit();
unset($sheet);
unset($excel);
?>
В отличие от документа MS Word, в котором обращение к документу осуществлялось при помощи Documents, при работе с MS Excel данную функцию осуществляет WorkBooks.
3. Создание документа MS PowerPoint
Удивительно, но при помощи COM технологии в PHP можно создавать не только статистические документы, но и мультимедийные презентации MS PowerPoint.
< ?php
// создаем новый объект COM – powerpoint.application
$powerpnt = new COM("powerpoint.application");
//Создание новой презентации
$pres=$powerpnt->Presentations->Add();
//Добавление первого слайда
$pres->Slides->Add(1,12);
//Добавление другого слайда
$pres->Slides->Add(2,10);
//Добавление текстового окна
$pres->Slides[1]->Shapes->AddTextbox(1,20,50,300,40);
//Добавление звезды
$pres->Slides[1]->Shapes->AddShape(94,100,200,300,300);
//Сохранение презентации
$powerpnt->Presentations[1]->SaveAs("C:byeworld.ppt")
;
//Выход из MS PowerPoint
$powerpnt->quit();
?>
По аналогии можно создавать любые документы Microsoft Office. Альтернативой COM технологии служит технология CSV.
О сайте
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.