2010年11月11日 星期四

PHP產生Word報表

要用PHP產生word報表,我知道的有兩種方式。第一種是利用外部呼叫VBScript的方式產生真正的word檔案,但是這樣做有幾個缺點:
1.執行時要呼叫外部程式容易導致memory leak。
2.執行PHP的Server上必須安裝Office,換句話說,Linux不適用。
3.程式的撰寫與維護也比較不容易。
附上VBScript範例以及word範本,有興趣的人請自行參考。
PHP呼叫的方式如下:
system("wscript /e:vbscript wordreplace.vbs \"$deptname\" \"$name\" \"$date\" \"$sno\" \"$fileno\" \"$revno\" \"$content\" \"$filename\" \"file.doc\"");
現在介紹的重點是第二種方式,這就要拜現在Office越來越強大之賜,Word或是Excel都支援HTML語法了,說不定PowerPoint也行,留給需要的人自己去測試囉!
言歸正傳,所以我們只要能產生出附檔名為DOC的HTML報表,就是一種變通的word報表了阿!

我的做法通常如下:
1.先用Office製作一個報表範本檔,儲存時存成HTML格式,但是附檔名用DOC。
2.寫PHP的程式將範本檔讀進來,然後把資料用str_replace替換掉。再存成自己要的檔案。
3.將檔案送出到瀏覽器給使用者:header("location:./$mywordfile.doc"); <-不是必要的!

一頁的表格通常這樣就沒問題了,若是不確定頁數的多頁報表,可以先把範本檔做個兩三頁,然後用文字編輯器(例如ultraedit、Editplus,當然你喜歡用記事本也行),把檔案切割成header、body、footer三個部分。PHP中寫檔的開始先把header寫進去,再利用迴圈寫上多頁的body,最後再把footer寫進去。記住body要在最後插入一個換頁的分隔符號,這樣做出來的報表跳頁時就不會有問題了。

以下為各個檔案的範例下載:
Header範本
Body範本
Footer範本
PHP範本 (請使用按滑鼠右鍵另存目標的方式即可正常下載)

2 則留言:

  1. 你好,看到這個PHP產生Word報表的文章,
    可以跟您要這個範例嗎?上面的連結壞了
    非常感謝

    回覆刪除
    回覆
    1. 真是抱歉我到現在才發現你的留言,但是我剛剛試過都可以下載ㄚ,或許你現在已經找到你自己的方法了!但是如果你還有需要的話現在應該是可以正確下載的~之前可能只是剛巧我的虛擬主機那邊出了點小問題吧!

      刪除