2012-01-30 75 views
1

在Excel改變數據我有一個開放Excel中總是不斷被經由DDE另一個程序更新表。我希望有一個php腳本來訪問此Excel表中的一些數據。我嘗試過使用PHPExcel,看起來我不能讓我所做的更改(例如通過setCellValue)立即反映在打開的Excel表單中。同樣,如果我更改單元格的值(不將表單保存到文件系統中),單元格的新值不能通過getValue()獲得。提取動態通過PHP

是由ph​​pExcel支持此功能?如果是這樣,有人可以請我指出文件,說明如何做到這一點?或者,有沒有另一種方法(例如,不使用phpExcel)來做到這一點?

謝謝。

+0

你需要寫你立刻進行任何更改,然後重新從磁盤上的文件。這很可能會破壞事情。 Excel的設計不是像這樣操作 - 它沒有設計任何接近支持併發的東西 - 而且你需要*使用適當的數據庫引擎。 – DaveRandom 2012-01-30 10:33:49

+0

我懷疑phpExcel,但你可以嘗試從PHP通過COM或DDE訪問文件。 – hakre 2012-01-30 10:35:06

回答

3

我能夠這樣使用在the rarified blog webpage

這爲我工作所示的方法,從得到修正值(不保存文件)做的,無論是從PHP的「推」單元格的值到Excel,以及excel to perl。這個網站還有一個漂亮的基於ajax的功能,可以使用excel中的最新值自動刷新我的網頁。

非常感謝該博客的作者。

1

PHPExcel不支持PHPExcel當您發出load()調用時,PHPExcel會將工作簿加載到內存中,並且此時無法在工作簿被更改時自動更新您的DDE,因爲DDE更新是針對磁盤上的工作簿,而不是PHP內存中的PHPEXcel副本。

你需要不斷地加載和重裝拿起改變底層文件。

同樣,如果您在PHPExcel中更改工作簿,它不會將該更改寫回到磁盤上的文件,除非您明確地保存(),所以更改對您的DDE程序將不可見。

我不知道是否你甚至可以使用MS Excel本身做到這一點......如果您加載使用MS Excel的本身,你從磁盤加載到內存中的工作簿,如果其他任何正在訪問該工作簿時時間,你發現你已經以只讀模式加載它,並且(據我所知),只要DDE程序更新原始版本,它就不會自動刷新。如果任何事情都能以你需要的方式工作,那很可能是COM,但我不會過多地建立你的希望。