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 минут и два прута от арматуры. Чем ты лучше?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_katjonka_*
сообщение 16.8.2006, 15:36
Сообщение #2





Гость






мегаблагодарность! очень нужная инфа!

анонсированные статьи тоже было б славно=)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Iceman
сообщение 16.8.2006, 22:23
Сообщение #3


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


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



Ну что ж... Раз просят, сделаем smile.gif


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

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


MORPECH


Группа: Участник форума
Сообщений: 960
Регистрация: 7.4.2006
Из: 4e
Пользователь №: 580



Народ, как пробить Порт, на php??? Как-то невдавался, а щя понадобилось...
ip пробивается так:

<?
$ip = $REMOTE_ADDR;
?>

Тут переменная "ip" принимает значение ip адреса клиента.(для расширения кругозора на вс.пож.)


--------------------
BMW CLUB INSTERBURG
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Iceman
сообщение 19.8.2006, 3:39
Сообщение #5


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


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



Я так понимаю тебе нужны сетевые функции.
Вот они:
Код
checkdnsrr - проверяет записи DNS, соответствующие данному имени Internet-хоста или IP-адресу
closelog - закрывает соединение с системным логером/logger
debugger_off - отключает внутренний отладчик PHP
debugger_on - включает внутренний отладчик PHP
define_syslog_variables - инициализирует все константы, относящиеся к syslog
fsockopen - открывает соединение сокета домена Internet или Unix
gethostbyaddr - получает имя Internet-хоста, соответствующее данному IP-адресу
gethostbyname - получает IP-адрес, соответствующее имени данного Internet-хоста
gethostbynamel - получает список IP-адресов, соответствующих имени данного Internet-хоста
getmxrr - получает MX-записи, соответствующих имени данного Internet-хоста
getprotobyname - получает номер протокола, ассоциированный с именем протокола
getprotobynumber - получает имя протокола, ассоциированное с номером протокола
getservbyname - получает номер порта, ассоциированного с Internet-сервисом и протоколом
getservbyport - получает Internet-сервис, соответствующий порту и протоколу
ip2long - конвертирует строку, содержащую (IPv4) Internet Protocol-адрес с точкой, в соответствующий адрес
long2ip - конвертирует (IPv4) Internet-сетевой адрес в строку стандартного Internet-формата с точкой
openlog - открывает соединение с системным логером
pfsockopen - открывает постоянное соединение сокета домена Internet или Unix
socket_get_status - возвращает информацию о потоке существующего сокета
socket_set_blocking - устанавливает режим blocking/non-blocking сокета
socket_set_timeout - устанавливает timeout-период сокета
syslog - генерирует системное log-сообщение

Из всей этой хрени тебе пригодится следующая:
getservbyport
(PHP 4)
getservbyport - получает Internet-службу, которая соответствует порту и протоколу.

Описание
string getservbyport (int port, string protocol)

getservbyport() возвращает Internet service, ассоциированный с port для специфицированного protocol как для /etc/services .

protocol это "tcp" или "udp" (в нижнем регистре).

Истесна, port в цикл или массив с перебором. Вот. spiteful.gif

П.С. В следующий раз отошлю в RTFM. dry.gif


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

Следует помнить, что тебя отделяет от инвалидности лишь 5 минут и два прута от арматуры. Чем ты лучше?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Loser_*
сообщение 28.9.2006, 8:03
Сообщение #6





Гость






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

А вы случайно не знаете как обратиться к примечанию(комментарию) ячейки, и копернуть его от туда??
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Iceman
сообщение 28.9.2006, 10:27
Сообщение #7


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


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



Нет, вот этого я, к сожалению, не знаю. mellow.gif


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

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

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

 



RSS Текстовая версия Сейчас: 25.4.2024, 9:41