IPB

Здравствуйте, гость ( Вход | Регистрация )

Скрыть объявления

Объявления

------------------------------------------------------------------------------------
09.08.2019 - Ввиду постоянных спамерских атак, автоматическая регистрация на форуме временно закрыта. Если Вы хотите зарегистрироваться, пожалуйста напишите на почту администратора форума (указана на странице контактов на сайте) и укажите желаемый ник и Ваш адрес электронной почты.
------------------------------------------------------------------------------------
> Язык программирования PHP, Проблемы и пути их решения
Iceman
сообщение 8.6.2006, 13:36
Сообщение #1


Призрак форума


Группа: Участник форума
Сообщений: 3698
Регистрация: 24.10.2004
Из: Iceland
Пользователь №: 15



Попрошу минуточку внимания.
Создавая этот форум я рассчитываю на Вашу сознательность.
Прошу не флудить. Не надо спрашивать о том, что конкретно может быть описано в мануалах.
В таких случаях Вы банально будете отосланы а Гуглу и RTFM(FAQ).
Я хочу поговорить о интересных проблемах и путях их решения.

Для затравочки выкладываю интересную статью, которую искал довольно долго.
Рейтинг редкости материала: ~7-8 баллов

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

Введение
Данная серия статей посвящена созданию документов Excel при помощи PHP. Данная возможнось может понадобиться, например, если нужно предоставить пользователю загружаемые данные в виде листов Excel. Это могут быть прайсы на продукцию, автоматически генерируемые из базы данных на сервере, либо какие-то документы, которые также необходимо представить в виде документов Excel.
Здесь рассматривается возможность работы с Excel-документами через COM-объект. К сожалению работа с COM-объектами в PHP возможна только на Windows-платформах. По-этому если Вы используете Unix-хостинг, то создавать и редактировать Excel-документы приведенным ниже способом не получится.

Работа с COM-объектами производится при помощи синтактсиса
Код
$com_object = new COM($object);

где
$com_object - новый COM-объект;
$object - id-класс требуемого объекта.

Для создания Excel-документов переменной $object необходимо задать значение "Excel.Application" либо "Excel.sheet".

Код
$xsl = new COM("Excel.Application");

После создания нового COM-объекта, можно обращаться к его свойствам и методам:
Код
<?php
$xls = new COM("Excel.Application"); // Создаем новый COM-объект
$xls->Application->Visible = 1;      // Заставляем его отобразиться
$xls->Workbooks->Add();              // Добавляем новый документ

$rangeValue = $xls->Range("A1");
$rangeValue->Value = "В выделенном блоке текст будет жирный, подчеркнутый, наклонный";
$rangeValue = $xls->Range("A2");
$rangeValue->Value = "Шрифт будет иметь высоту 12";
$rangeValue = $xls->Range("A3");
$rangeValue->Value = "Имя шрифта - Times New Roman";

$range=$xls->Range("A1:J10");               // Определяем область ячеек
$range->Select();                           // Выделяем ее
$fontRange=$xls->Selection();               // Присваиваем переменной выделенную область

// Далее задаем параметры форматирования текста в выделенной области
$fontRange->Font->Bold = true;              // Жирный
$fontRange->Font->Italic = true;            // Курсив
$fontRange->Font->Underline = true;         // Подчеркнутый
$fontRange->Font->Name = "Times New Roman"; // Имя шрифта
$fontRange->Font->Size = 12;                // Размер шрифта

?>


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

создать новый документ;
открыть ранее созданный документ;
сохранить открытый документ;
закрыть документ.

Создание нового документа:
Создание нового документа в Excel происходит в три действия:
- Создаем "связь" между PHP и Excel (создается дескриптор, как при работе с файлами);
- Указываем, будет ли визуально открыта программа или нет;
- Указываем программе через дескриптор, что нужно открыть новый документ.
Для создания дескриптора ("связи") нужно использовать обращение к Excel через COM-объект:
Код
$xls = new COM("Excel.Application");

Теперь через дескриптор $xls мы можем обращаться ко всем свойствам и методам Excel.
Будет ли отображаться Excel или нет, указывается в свойстве Visible() объекта Application().
Если мы этому свойству присвоим значение 1, то программа будет отображаться, если 0, то нет:
Код
$xls->Application->Visible = 1;

Ну и, наконец, добавить новый документ можно при помощи метода Add() объекта Workbooks():
Код
$xls->Workbooks->Add();

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

Первые две строки этого примера нужно использовать всегда при работе с Excel через PHP.

Открытие ранее созданного документа:
Открытие документа можно сделать при помощи метода Open() объекта Workbooks().
В передаваемом методу Open() параметре нужно указать имя открываемого файла:
Код
<?php
$xls = new COM("Excel.Application");  // Создаем новый COM-объект
$xls->Application->Visible = 1;       // Заставляем его отобразиться
$xls->Workbooks->Open("C:\test.xls"); // Открываем ранее сохраненный документ
?>

Если указать не полный а относительный путь, то поиск открываемого файла будет происходить не на сервере а на компьютере пользователя (по умолчанию это папка "Мои документы").

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

// Сохраняем документ
$xls->Workbooks[1]->SaveAs("test.xls");

$xls->Quit();                        //Закрываем приложение
$xls->Release();                     //Высвобождаем объекты
$xls = Null;
$range = Null;
?>


Закрытие документа:
Закрытие документа производится методом Quit().
Код
<?php
$xls = new COM("Excel.Application");  // Создаем новый COM-объект
$xls->Application->Visible = 1;       // Заставляем его отобразиться
$xls->Workbooks->Add();
$range=$xls->Range("A1");            // Выбрали ячейку A1
$range->Value = "Что-то записываем";      // Вставили значение

// Сохраняем документ
$xls->Workbooks[1]->SaveAs("test.xls");

$xls->Quit();                        //Закрываем приложение
$xls->Release();                     //Высвобождаем объекты
$xls = Null;
$range = Null;
?>


Чуть позже я могу подготовить материал по разделам:
- Формат ячеек: Выравнивание
- Формат ячеек: Шрифт
- Работа со строками
- Работа с колонками
- Добавление / Удаление / Переименование листов
- Рисование таблиц
- Копирование / вставка ячеек
если кому-то будет это интересно


--------------------
-> Я глаз даю, что умных в этом мире
-> Всего лишь двое: Я и Пентиум четыре.

Следует помнить, что тебя отделяет от инвалидности лишь 5 минут и два прута от арматуры. Чем ты лучше?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 6.7.2025, 12:18