PHPWord替換文字

PHPWord是能用PHP產生Word檔的函式庫,這裡紀錄使用這套函式庫將word檔內的特定段落文字替換掉。

1.前置準備
             首先必須準備已經規劃好的樣本格式word檔放入專案執行的目錄中,將要替換的文字用 ${ } 錢字號和大括弧表示,中間塞入一個變數名稱,名稱可自行命名,這裡是使用${Value1}${Value2}做測試(圖一)。


(圖一)

                關於替換的變數很重要的一點,不要在word檔內直接打上替換變數,先在記事本或其他文字編輯軟體上打好再複製貼上(圖二),否則在執行時不會成功。



(圖二)

                我測試是使用記事本複製貼上,若直接在word上打上變數,表面上看不出來有和不同,但將word檔另存成xml檔在用文字編輯器打開來看其實文字中間被插入了很多空格,不是一個完整的變數。


${Value1}是從記事本貼過去的(圖三),${Value2}則是直接在打word上面,可以看到${Value2}符號和文字中間被插入了很多符號,程式在執行時會無法判讀(圖四)。


(圖三)
(圖四)


2.程式執行
              再來就是執行的部分,先將下載下來的PHPWord檔案放入專案執行的目錄中,然引用涵式,接著呼叫PHPWord,以下是替換字使用的程式(圖五)和說明:

loadTemplat:這裡是去抓前面準備好的word檔樣本,路徑和檔名都要打對。

setValue :替換文字,setValue(“word檔內要被替換的變數名稱,錢字號和大括號這裡不用加上”,”要被替換的文字”)


save:儲存檔案。可選擇儲存的地方,這裡是存在專案執行的目錄底下。


(圖五)


3.執行結果

最後會產生一份新的word檔,不會將樣本蓋掉,內容就是程式要替代掉最後結果(圖六)。


(圖六)



            這是因工作需求要產生大量相同格式,但特定內容須作修改的word檔,所以我使用PHPWord再搭配資料庫使用讓文件能更快產生,提供使用者從網路下載。不過途中一直無法成功替代文字,後來在網路上看到一位前輩寫的文章,要先在記事本上打好再複製過去的小技巧,所以簡單的東西也是有要注意的小細節啊!

留言

這個網誌中的熱門文章

Fatal error: Call to a member function bindValue() on null

IIS-Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'

ORA-12899: value too large for column