Иногда возникает необходимость генерировать документы 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 обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.