Взаимодействие PHP и Excel

mshdn

Новичок
Взаимодействие PHP и Excel

Есть прекрасная возможность работать из PHP в Excel - использования объекта COM в PHP .
( $excel = new COM("Excel.Application"; и т.д.)
Позволяет читать и записывать данные из/в ячейки excel таблицы.
Единственно, что плохо- чтобы увидеть изменения в таблице, которые вносятся из ПХП,
нужно ставить режим автоматического сохранения документа Excel, причем наименьшее время - 5 минут,
т.е. максимальное время ожидания изменений - 5 мин.
Кто-нибудь делал связку PHP-Excel,работая с этим классом? Есть возможность сразу увидеть данные в ячейках таблицы?
 

dimagolov

Новичок
mshdn, ты хочешь писать пхп-ой в таблицу и одновременно ее смотреть?
сколько же времени исполняется этот скрипт и зачем такой изврат?

п.с. что мешает сохранять таблицу "руками" через COM?
 

FB3

Новичок
И работать оно будет, если не ошибаюсь, только под виндой. Для кроссплаформенности вроде есть какие-то библиотеки, поищи, если нужно.
 

mshdn

Новичок
Автор оригинала: dimagolov
mshdn, ты хочешь писать пхп-ой в таблицу и одновременно ее смотреть?
сколько же времени исполняется этот скрипт и зачем такой изврат?

п.с. что мешает сохранять таблицу "руками" через COM?
Да, нужно одновременно работать с таблицей- из Excel и из браузера через ПХП.
А как сохранять таблицу "руками" через COM? -
У меня:
$excel->Workbooks->Open("d:\\news.xls"); // открываем уже существующий

$write =$excel ->Range("A6");
$write ->Value = "write PHP!!!";
$excel ->Workbooks[1]->SaveAs("d:\\news.xls");
 

dimagolov

Новичок
mshdn, а ты не пробовал открывать одну и ту же таблицу одновременно просто в двх копиях excel? это у тебя получится только в разных сессиях или по сети, а во-вторых писать сможет только первый процесс.

в теории, если у тебя php из под того же юзера, что ты открыл табличку, может приконектиться к уже запущенному экземпляру Excel, найти среди открытых окон нужный файл и в нем что-то менять/сохранять и т.п.
 

mshdn

Новичок
я не точно описал - таблица Excel на сервере, с ней работает
оператор.
В это же время удаленно с другого компа через Инет( через браузер) запускается скрипт ПХП на этом сервере, скрипт работает с той же таблицей.
Данные в таблице ( внесенные из ПХП) появляются, но только после операции Сохранить в Excel.
 

dimagolov

Новичок
не понимаю, почему если ты меняешь открытую оператором таблицу из пхп ты не можешь так же сохранять ее?
 

mshdn

Новичок
не знаю, не получается, нет нужного метода? Вернее,
$excel ->Workbooks[1]->SaveAs("d:\\news.xls");
сохраняет данные в файл. Но как дать команду Excel обновить
таблицу?
 

Adelf

Administrator
Команда форума
у меня возникает ощущение, что ты какую-то свою задачу делаешь через задницу.
Что конкретно надо сделать? Почему выбрал PHP?
 

dimagolov

Новичок
mshdn, тебе уже 2 раза сказал, скажу 3-й. Для наблюдения за изменениями в excel файле и оператор и пхп должны использовать ОДИН И ТОТ ЖЕ экземпляр Excel, в котором будет открыта нужная таблица. Необходимым, но не достаточным условием подсоединения по COM к нужному экземпляру является работа php/apache из под того пользователя, под которым залогинен оператор.

действительно, почему нельзя писать в таблицу БД, а оператор не может читать ее содержимое через тот же веб-интерфейс, регулярно подтягивая новые данные?
 

mshdn

Новичок
действительно, почему нельзя писать в таблицу БД, а оператор не может читать ее содержимое через тот же веб-интерфейс, регулярно подтягивая новые данные? [/QUOTE]
Пока задача стоит - сделать все на автомате - без участия оператора.
Из ПХП отправили- в экселе получили ( в открытом документе). По полученным данным в экселе
работаеи функция, формирует ячейку, эту ячейку ПХП читает себе в браузер.
Такая постановка.
Вобщем-то все получается, но обновление эксел делает самое меньшее каждые 5 минут.
Если бы уменьшить этот период, было бы нормально.
 

prolis

Новичок
У вас там узел SharePoint развернут?
В противном случае вообще не понятно как это все вообще работает. В любом случае необходимо на стороне оператора как-то периодически рефрешить данные, мб макросом.
 

dimagolov

Новичок
Из ПХП отправили- в экселе получили ( в открытом документе). По полученным данным в экселе
работаеи функция, формирует ячейку, эту ячейку ПХП читает себе в браузер.
то есть весь этот маразм с экселем только ради формулы, которую он будет считать? ну-ну...
 

mshdn

Новичок
prolis, SharePoint не развернут.Чтобы одновременно работать над одним документом эксел устанавливается:
Сервис- Доступ к книге-
1. разрешить одновременную работу нескольким
2. Подробнее - обновлять изменения каждые 5 мин
Да, может быть макросом как-то обновлять данные чаще, но с Экселем не работал, надо читать.
dimagolov, может это и маразм, но не я его придумал.
"Если звезды светят, значит это кому-нибудь нужно"
 

dimagolov

Новичок
даже тот факт, что это придумал не ты не является обоснованием подобного идиотизма и не запрещает сделать это лучше и по-другому.

потому что тот закат солнца вручную, что у тебя сейчас интересен исключительно тебе и никому больше.
 

mshdn

Новичок
Ясно, что можно всегда сделать лучше и иначе.
Смысл обращения на форум - узнать, применим ли COM-объект
для решения задачи.
 

dimagolov

Новичок
проблема не в COM объекте. проблема в том, что многопользовательский доступ к таблицам в Excel это конкретный костыль, который еще нужно подсунуть в правильном месте. куда продуктивнее реализовать то же самое другой технологией.

а про применимость COM-объекта нужно читать скорее в мане по VBA for Excel и в msdn, а не спрашивать на форуме PHP. По крайней мере когда мне понадобился COM я поступал именно так.
 

Inferno

Новичок
получаеться что excel должен быть открыт в м ногопользовательском режиме
Если открыть один и тот же файл по сети в этом режиме то данные будут автоматически обновляться при сохранении одним из клиентов, причем при сохранении будет выставлена блокировка, так что это "обновление" будет заметно...
 
Сверху