首頁  >  文章  >  後端開發  >  phpword替換模板內容與解決中文亂碼

phpword替換模板內容與解決中文亂碼

不言
不言原創
2018-04-02 13:21:403140瀏覽

這篇文章跟大家分享的內容是phpword替換模板內容和解決中文亂碼的問題,有需要的朋友可以看一下。

好吧 先下載:
下載網址:https://pan.baidu.com/s/1upup2rpLTVXIdJpGi9kK6A
密碼:qxsd
手冊 http://phpword.readthedocs.io /en/latest/search.html?q=setValue&check_keywords=yes&area=default

//使用Vendor包含PHPWord類別
require_once "./word/PHPWord.php";
//初始化PHPWord物件
$PHPWord = new PHPWord();
$oMember['m_real_name'] = "電子鏡測試";
$oMember['content'] = "電子鏡測試需求描述電子鏡測試說明電鏡測試需求描述電鏡測試

需求描述電子鏡測試需求描述電鏡測試需求描述電鏡測試需求描述電鏡測試需求描述電鏡測試需求描述
電鏡測試需求描述電子鏡測試需求描述電鏡測試需求描述電鏡測試需求描述電子鏡測試需求描述電子鏡測試需求描述電鏡測試需求

描述電子鏡測試需求描述電鏡測試需求描述電子鏡測試需求說明";
//載入範本檔案
$document = $PHPWord ->loadTemplate('./word/test/template1.docx');

//取代Word模板檔案中的一處內容,這裡如果要顯示中文,則必須使用iconv函數
$document->setValue('need_name', iconv('utf-8', 'GB2312//IGNORE', $oMember['m_real_name']));
$document->setValue('content', iconv('utf-8', 'GB2312//IGNORE', $oMember['content']));

//取代Word範本檔案中的一處內容,不使用中文的setValue
$document->setValue('file', "7897898998");

$filename = './word/test/m-i-'.time().'.docx';

//儲存Word文件
$document->save($filename);

//輸出下載Word文件
//header("Location: ".$filename)


模板檔案裡面的變數寫法 

content   =》    ${content}  記住一定不要在這個變數上面加任何樣式否則會被影響

need_name =》    ${need_name}

file      =》    ${file}


Word/Base.php     _WriteTextStyle()方法下面 

$objWriter->writeAttribute('w:eastAsia', $font); //修改新增

if ($font != 'Arial') {
         $objWriter->startElement('w:rFonts');
      這一行 修改新增
      $objWriter->writeAttribute('w:ascii', $font);
    W  $objmriter ;writeAttribute('w約sihute)( ->writeAttribute('w:cs', $font);
   $objWriter->endElement();

}

#PHPWord/Template.php  setValue()方法下:


if(!is_array($replace)) {

#if(!is_array($replace)) {

// $replace = utf8_encode($replace);  註釋

 $replace = iconv( 'gbk','utf 8', $replace); //新增

}


好了 現在沒有問題了

來源:二流子

#相關推薦:

php如何解決中文亂碼問題?


##########

以上是phpword替換模板內容與解決中文亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn