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

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.