天天看點

如何線上生成Word文檔?一種極簡,極強大的方法,支援圖檔表格等各種格式

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

大家在日常工作中會遇到這樣的情況,線上給數萬人生成一個證書、成績單什麼的,而且要求儲存為word文檔讓大家下載下傳。

難道我們要去學習word的編碼格式?難道要去找一個word讀寫庫?太複雜了!我們其實隻是要把一個Word文檔,每次替換幾個字而已,對吧?

思路來了:

1、先根據你們業務的要求,制作一個樣式豐富好看的Word文檔,把裡面要替換的内容寫成xxxxxxxx, yyyyyyy等通用字元串。

2、然後把這個Word文檔另存為xml格式,例如:muban.xml

3、去我的電腦-對應檔案夾裡面找到 muban.xml ,然後把它重命名為 muban.docx  (為什麼不直接在2中儲存為docx呢?直接儲存為docx格式的話,Office會用二進制的方式寫檔案。這樣就沒法做後面的替換了)

4、把做好的 muban.docx 上傳到伺服器

5. 把下面的一段代碼也放到伺服器,儲存為index.php

<?php  

function edit($file, $needle, $heap) {  

  $content = @file_get_contents($file);  

  if(!$content){  

    echo "檔案找不到";  

    return false;  

  }  

  $content = preg_replace("/$needle/", $heap, $content);  

  return $content;  

}  

$sheet_title = 'chengjidan.docx';  

header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');  

header('Content-Disposition: attachment;filename="'.$sheet_title. '"');  

header('Cache-Control: max-age=0');  

ob_clean(); // 必須加這一句,否則生成的檔案可能打不開。因為有額外的輸出。  

echo edit('muban.docx', 'xxxxxxxx', $_REQUEST['name']);   /// xxxxxxxx就是你要替換掉的内容  

exit;  

最後伺服器上得到2個檔案,一個是index.php,一個是 muban.docx:

[root@code wordgen]# ls  

muban.docx   index.php  

6. 通過網站位址: http://your_web_path/index.php?name=Raywill   就能下載下傳到Word啦~!打開看看,裡面的xxxxxxx全部被替換成Raywill啦~簡單不?!

如果你用的不是php,而是其他程式設計語言,也不用擔心,思路都是一樣的。讀檔案,替換,輸出,如此而已。