Извлечение динамически изменяемых данных в Excel с помощью PHP - PullRequest
1 голос
/ 30 января 2012

У меня есть открытый лист Excel, который постоянно обновляется другой программой через DDE. Я хотел бы иметь PHP-скрипт, который обращается к некоторым данным в этой таблице Excel. Я пытался использовать PHPExcel, и мне кажется, что я не могу сразу же отразить сделанные мной изменения (например, через setCellValue) в листе open excel. Точно так же, если я изменяю значение ячейки (без сохранения листа в файловую систему), новое значение ячейки не доступно через getValue ().

Поддерживается ли эта функция phpExcel? Если да, может кто-нибудь указать мне документацию, которая показывает, как это можно сделать? В качестве альтернативы, есть ли другой способ (например, не используя phpExcel), чтобы сделать это?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 31 января 2012

Я смог сделать это, используя метод, показанный на веб-странице блога

Это сработало для меня, как для «перевода» значений ячеек из php в excel, так и для получения измененных значений (без сохранения файла) из excel в perl. Этот сайт также имеет отличную функцию на основе Ajax, которая постоянно обновляет мою веб-страницу с последними значениями в Excel.

Большое спасибо автору блога.

1 голос
/ 30 января 2012

Это не поддерживается PHPExcel .... PHPExcel загружает рабочую книгу в память в тот момент, когда вы выполняете вызов load (), и в этот момент он не может «автоматически обновлять» всякий раз, когда рабочая книга изменяется вашим DDE, потому что обновление DDE относится к книге на диске, а не к копии PHPEXcel, которая находится в памяти PHP.

Вам необходимо постоянно загружать и перезагружать, чтобы получить изменения в базовом файле.

Аналогичным образом, если вы измените рабочую книгу в PHPExcel, она не запишет это изменение обратно в файл на диске, если вы не сохраните явно (), поэтому изменение не будет видно вашей программе DDE.

Я не знаю, можете ли вы сделать это даже с помощью MS Excel ... если вы загружаете книгу с помощью самого MS Excel, вы загружаете с диска в память, и если что-то еще обращается к этой книге на время, вы обнаружите, что вы загрузили его в режиме только для чтения, и (насколько я знаю) он не будет автоматически обновляться всякий раз, когда программа DDE обновляет исходную версию. Если что-то может с этим работать так, как вам нужно, скорее всего, это будет COM, но я бы не стал слишком сильно возлагать на вас надежды.

...