如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2022年11月1日

Codeigniter Word套表應用的開發步驟

作者: Fred F.M. Wang (FW知識瑣記) 日期:2022-11-1

    PHP的Excel的套表應用開發程序比較單純,直接可以用程式將資料寫入樣板檔的相關儲存格,但是Word的套表就必較複雜,如下圖右邊為Excel套表的開發步驟,左邊是Word套表的開發步驟。
 



準備 :
Codeigniter使用PHPWord版本是CI_PHPWord,程式庫來源為https://github.com/rifqisucahyo/CI_PHPWord
依連結中的說明,將各檔案放到您 Codeigniter專案的資料夾中。
然後將phpword\template.php檔案的這行註釋掉:$replace = utf8_encode($replace);


樣板製作與程式設計步驟 :

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

 

沒有留言:

張貼留言

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)