phpword替换模板内容+解决中文乱码
2018-04-02 11:31
323 查看
好吧 先下载吧:
下载地址: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); //新增
}
好了 现在没有问题了
来源:二流子
下载地址: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); //新增
}
好了 现在没有问题了
来源:二流子
相关文章推荐
- PHPword解决中文乱码
- java freemarker 通过ftl模板文件导出word文件发现在有中文地方出现在乱码,打开word文件提示xml错误解决办法
- 使用PHP向Mysql数据库插入信息,页面中文内容显示正常,但在数据库里却是乱码,这个怎么解决?
- phpword解决中文乱码
- phpword中文乱码解决方法
- 解决PHP文件(word/excel)下载 内容打开乱码问题
- php中文字符替换乱码问题解决
- PHPWord 中文乱码解决
- php读中文显示乱码,怎么解决 php默认识别UTF-8的方法
- 解决php调用带输出参数的MySQL返回中文时乱码
- Owl内容管理系统及中文乱码的解决
- phpexcel导出excel中文乱码问题解决
- PHP汉字验证码中文乱码之解决方法
- PHP+MySQL中文数据保存到数据库乱码的解决方法
- ThinkPHP5.0的模板html文件替换后还是显示原内容的解决办法
- php读mysql中文乱码问题解决方法
- php彻底解决PHP在URL中传递中文时乱码的方案
- php json_encode 中文乱码的解决方法 分类: php json encode 中文乱码 2014-02-19 11:28 720人阅读 评论(0) 收藏
- 解决php接收shell返回的结果中文乱码问题
- PHP解决搜索时在URL地址栏输入中文字符搜索结果出现乱码