版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
大家在日常工作中會遇到這樣的情況,線上給數萬人生成一個證書、成績單什麼的,而且要求儲存為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,而是其他程式設計語言,也不用擔心,思路都是一樣的。讀檔案,替換,輸出,如此而已。