首页 >后端开发 >php教程 >phpword替换模板内容和解决中文乱码

phpword替换模板内容和解决中文乱码

不言
不言原创
2018-04-02 13:21:403169浏览

本篇文章给大家分享的内容是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:eastAsia', $font); // 添加这行 修改新增
      $objWriter->writeAttribute('w:ascii', $font);
      $objWriter->writeAttribute('w:hAnsi', $font);
      $objWriter->writeAttribute('w:cs', $font);
   $objWriter->endElement();
}

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

if(!is_array($replace)) {
// $replace = utf8_encode($replace);  注释
 $replace = iconv( 'gbk','utf-8', $replace); //新增
}

好了 现在没有问题了


来源:二流子

相关推荐:

php如何解决中文乱码问题?



以上是phpword替换模板内容和解决中文乱码 的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn