作者: Fred F.M. Wang (FW知識瑣記) 日期 :2022-11-21
當你不再年輕,就該收斂狂野與孤傲的內心。
當你不再年輕,就該知道知識與時間的價值。
當你不再年輕,就該承擔家庭與工作的責任。
當你不再年輕,就該了解親情與友情的重要。
當你不再年輕,就該分辨夢想與現實的差距。
雖然你不再年輕,雖然生活不再那麼容易,雖然...
你仍然可以擁有一顆赤誠與良善的心。
你仍然可以享受自然與生命的美好。
你仍然可以活出自己美麗的人生。
-- Fred F.M. Wang 葭月有感
作者: Fred F.M. Wang (FW知識瑣記) 日期 :2022-11-21
作者: Fred F.M. Wang (FW知識瑣記) 日期:2022-11-1
PHP的Excel的套表應用開發程序比較單純,直接可以用程式將資料寫入樣板檔的相關儲存格,但是Word的套表就必較複雜,如下圖右邊為Excel套表的開發步驟,左邊是Word套表的開發步驟。
樣板製作與程式設計步驟 :
Step 1 將設計好的Word表單檔(.docx檔)使用MS Word轉存成XML檔。
Step 2 使用文字編輯器編輯XML, 找到檔案中放資料位置,插入變數,格式為 ${變數名稱}
Step 3 再將編輯完成的XML檔使用MS Word轉存成Word表單檔(.docx檔),再將這個帶有變數名稱的樣板檔放在Server上成為正式的樣板。
Step 4 撰寫程式,將資料寫入樣板文件的變數中,並儲存成表單文件檔。
注意 :
1. 如果要變更樣板內容,不能直接編輯Step 3的樣板檔(.docx檔),必須修改Step 1產生的XML檔,再進行Step 2至Step 4。
2. 內容中如果有&符號會造成轉換後的Word檔無法讀取,因此先將內容的”&”用逗號等符號取代,再寫入。例如 $objPHPWordOut->setValue("desc",str_replace("&",",",$data["description"]));
範例程式 :
// 樣本檔檔案路徑為$templatefile, 例如下面程式
$templatefile = dirname($_SERVER["SCRIPT_FILENAME"]) . "/templates/app1/form_template.docx";
// 要寫出的檔案路徑為$outfilepath, , 例如下面程式
$outfile = "exports/app1/doc_" . date("YmdHis"). ".docx";
$outfilepath = dirname($_SERVER["SCRIPT_FILENAME"]) . "/" .$outfile;
$this->load->library("word");
$PHPWord = $this->word;
$objPHPWordOut = $PHPWord->loadTemplate($templatefile); // 載入樣板檔
// $data是要寫入的資料陣列
$this->write_data_to_word($objPHPWordOut,$data); // 寫入資料
$objPHPWordOut->save($outfilepath); // 儲存至寫出檔案
private function write_data_to_word($objPHPWordOut,$data) {
// 將$data[“id”]的內容取代樣板檔中變數id也就是 $id
$objPHPWordOut->setValue("id",$data["id"]);
…
}
參考來源 : PHPWord中文手冊整理- ITW01