2

DDE を介して別のプログラムによって常に更新されている開いている Excel シートがあります。この Excel シートの一部のデータにアクセスする php スクリプトが必要です。PHPExcel を使用してみましたが、(setCellValue などを使用して) 行った変更が、開いている Excel シートにすぐに反映されないようです。同様に、セルの値を変更した場合 (シートをファイル システムに保存せずに)、セルの新しい値は getValue() 経由では使用できません。

この機能は phpExcel でサポートされていますか? もしそうなら、誰かがこれを行う方法を示すドキュメントを教えてもらえますか? あるいは、これを行う別の方法 (たとえば、phpExcel を使用しない) はありますか?

ありがとう。

4

2 に答える 2

3

希少なブログのウェブページに示されている方法を使用してこれを行うことができました

これは、php から Excel へのセル値の「プッシュ」と、Excel から perl への (ファイルを保存せずに) 変更された値の取得の両方で機能しました。このサイトには、Excel の最新の値で Web ページを自動更新し続ける気の利いた ajax ベースの機能もあります。

ブログの著者に感謝します。

于 2012-01-31T07:03:11.357 に答える
1

PHPExcel ではサポートされていません....PHPExcel は、load() 呼び出しを発行した時点でワークブックをメモリに読み込みます。 DDE の更新は、PHP メモリ内の PHPEXcel コピーではなく、ディスク上のワークブックに対して行われます。

基になるファイルへの変更を取得するには、常に読み込みと再読み込みを行う必要があります。

同様に、PHPExcel でワークブックを変更した場合、明示的に save() しない限り、その変更はディスク上のファイルに書き戻されないため、変更は DDE プログラムに表示されません。

MS Excel自体でこれを行うことができるかどうかはわかりません... MS Excel自体を使用してワークブックをロードすると、ディスクからメモリにロードされ、その時点で他の何かがそのワークブックにアクセスしている場合、読み取り専用モードでロードしたことがわかり、(私の知る限り) DDE プログラムが元のバージョンを更新するたびに自動的に更新されません。これで必要な方法で動作するものがあるとすれば、それは COM である可能性が高いですが、私はあなたの期待をあまり高めません。

于 2012-01-30T10:36:33.623 に答える