PHP 4 на практике

       

Запись информации в документ Microsoft Word


Допустим, вам потребовалось отформатировать информацию, загруженную из базы данных, в документе Word для построения отчета. Весь процесс автоматизируется всего в нескольких строках кода РНР. Для демонстрационных целей я воспользуюсь таблицей addressbook из проекта адресной книги, приведенного в конце главы 12. Алгоритм работы сценария выглядит следующим образом:

  1. Подключиться к серверу MySQL и выбрать нужную базу данных.
  2. Выбрать все данные из таблицы с сортировкой по фамилиям.
  3. Открыть приложение Microsoft Word и создать новый документ.
  4. Отформатировать и вывести все записи в документе.
  5. Запросить у пользователя имя для сохранения документа.
  6. Закрыть Microsoft Word.
  7. Программный код приведен в листинге 15.7.

    Листинг 15.7.

    Запись информации в документ Microsoft Word <?

    <?

    // Создать соединение с сервером MySQL

    $host = "localhost";



    $user = "root";

    $pswd = "";

    $db = "book";

    $address_table = "addressbook";

    mysql_connect($host. $user, $pswd)

    or die("Couldn't connect to MySQL server!");

    mysql_select_db($db) or die("Couldn't select database!");

    // Выбрать из базы данных все записи

    $query = "SELECT * FROM $address_table ORDER BY lastjiame";

    Sresult = mysql_query($query):

    // Создать новый объект COM для приложения MS Word

    $word=new COM("word.application") or die("Couldn't start Word!");

    // Активизировать окно MS Word $word->visible = 1;

    // Открыть пустой документ. $word->Documents->Add( );

    // Перебрать записи из таблицы адресов

    while($row = mysql_fetch_array($result));

    $last_name = $row["last_name"];

    $first_name = $row["first_name"];

    $tel = $row["tel"];

    $email = $row["email"];

    // Вывести данные таблицы в открытый документ Word.

    $word->Selection->Typetext("$last_name. $first_name\n"); $word->Selection->Typetext("tel. $tel\n"): $word->Selection->Typetext("email. $email:\n");

    endwhile;

    // Запросить у пользователя имя документа.

    $word->Documents[l]->Save;

    // Выйти из MS Word

    $word->Quit();

    ?>

    При всей простоте рассмотренный пример наглядно показывает, как писать приложения РНР для пересылки содержимого базы данных в приложения Windows. Можно написать и более сложное приложение, обеспечивающее синхронизацию данных, полученных из Web, из Microsoft Outlook. Все, что для этого нужно — получить ссылку на объекты, свойства и методы Outlook, после чего можно переходить к экспериментам (обзор объектной модели всех приложений семейства Office приведен по адресу http://www.microsoft.com/officedev/articles/Opg/toc/PGTOC.htm).



    Содержание раздела