使用PHPword中文乱码并且下载的方法
如果你的编码格式是utf-8的话就用这个
1.找到 Section.php 的 addText 函数
$givenText = utf8_encode($text);
改成
$givenText = iconv('gbk', 'utf-8', $text);
2.找到template.php这个文件,找到这个,把$replace = utf8_encode($replace);注释,换成 $replace =iconv('gbk', 'utf-8', $replace);
public function setValue($search, $replace) {
if(substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {
$search = '${'.$search.'}';
} if(!is_array($replace)) {
// $replace = utf8_encode($replace);
$replace =iconv('gbk', 'utf-8', $replace);
}
3.找到PHPWord\Section\Table\Cell.php中的addText()方法,把这行$text = utf8_encode($text);注释掉就可以了
4.输出的时候如果有汉字,就用这个输出
$document->setValue('weekday', iconv("utf-8","gbk",$list['company_name']));
5.保存的时候也一样
$document->save( iconv("utf-8","gbk",'C:/3D定制云_'.$list['company_name'].'.docx'));
6.下载word文档到本地
header("Content-type:text/html;charset=utf-8");
$filename='upload/download/3D定制云_'.$bloc['company_name'].'.docx';
$file_path = iconv("utf-8","gbk",$filename);
$fil_name=$filename;
if (!file_exists($file_path)){
echo "没有该文件";
return;
}else{
ob_clean();
ob_start();
$fp = fopen($file_path,"r");
$file_size = filesize($file_path);
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition:attchment; filename=".$fil_name);
$buffer=1024;
$file_count=0;
while (!feof($fp) && $file_count<$file_size ){
$file_con=fread($fp,$buffer);
$file_count +=$buffer;
echo $file_con;
}
fclose($fp);
ob_end_flush();
}
全部程序
vendor('phpoffice/PHPWord/PHPWord');
$PHPWord = new \PHPWord();
$dir='upload/';
$word='test.docx';
$document = new \PHPWord_Template($dir.$word);
$document->setValue('Value1', $bloc['username']);
$document->setValue('Value2', $bloc['original_password']);
$document->setValue('weekday', iconv("utf-8","gbk",$bloc['company_name']));
$document->save( iconv("utf-8","gbk",'upload/download/3D定制云_'.$bloc['company_name'].'.docx')); header("Content-type:text/html;charset=utf-8");
$filename='upload/download/3D定制云_'.$bloc['company_name'].'.docx';
$file_path = iconv("utf-8","gbk",$filename);
$fil_name=$filename;
if (!file_exists($file_path)){
echo "没有该文件";
return;
}else{
ob_clean();
ob_start();
$fp = fopen($file_path,"r");
$file_size = filesize($file_path);
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition:attchment; filename=".$fil_name);
$buffer=1024;
$file_count=0;
while (!feof($fp) && $file_count<$file_size ){
$file_con=fread($fp,$buffer);
$file_count +=$buffer;
echo $file_con;
}
fclose($fp);
ob_end_flush();
}
使用PHPword中文乱码并且下载的方法的更多相关文章
- jquery.ajax的url中传递中文乱码问题的解决方法
jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQu ...
- qt creator修改程序编码(解决中文乱码问题)的方法
qt creator修改程序编码(解决中文乱码问题)的方法 qt creator修改程序编码的功能有几处. 1.edit - select encoding 选择载入(显示)编码和储存编码,其中GB2 ...
- windows下mysql中文乱码, 配置解决方法
内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内 ...
- resin后台输出中文乱码的解决的方法!
近期从tomcat移植到resin,发现这东西不错啊! 仅仅是后台输出时有时候中文会乱码. 如今找到resin后台输出中文乱码的解决的方法: 编辑conf/resin.con文件: <!--ja ...
- 解决 php7 cli 模式下中文乱码的两中方法
解决 php7 cli 模式下中文乱码的两中方法1. 给PHP文件开头加上 exec('chcp 936'); 然后把该文件以 ANSI 格式编码2. 在 php.ini 中设置 default_ch ...
- 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的.比如下面的情况: 解决这个问题常用的有三种方法:1.通过转换为UTF-8编码来显示.2.使用i ...
- 解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...
- PHP中文乱码的常见解决方法总结
PHP中文乱码是PHP开发中的常见问题之一.PHP中文乱码有时发生在网页本身,有些产生在于MySQL交互的过程中,有时与操作系统有关.下面进行一番总结. 一.首先是PHP网页的编码 1. php文件本 ...
- PHPWord中文乱码、单元格合并、动态表格模板解决方案合集
摘要: 最近一个项目开发要用到PHP技术导出Word文档,采用PHPWord插件,版本为0.6.2 beta,CodePlex已停止维护.网上还有另外一个版本的PhpWord,项目类名大小写上略有不 ...
随机推荐
- Linux内存机制以及手动释放swap和内存
今天我们来谈谈Linux的内存机制. 首先我们理一下概念 一.什么是linux的内存机制? 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成, ...
- 微信小程序项目踩过的几个坑
一.前言 近期,开始了一段辛酸的还未开始就已经结束的"创业"(参见我的第二次创业,以梦为马,莫负韶华).大体上是开发了一款微信小程序,关于创业这件事情就不细说了,本文主要介绍一下开 ...
- etcd集群部署
etcd是用于共享配置和服务发现的分布式KV存储系统,随着CoreOS和Kubernetes等项目在开源社区日益火热,它们都用到了etcd组件作为一个高可用.强一致性的服务发现存储仓库.操作系统版本: ...
- Python中的浅拷贝与深拷贝
编者注:本文主要参考了<Python核心编程(第二版)> 以下都是参考资料后,我自己的理解,如有错误希望大家不吝赐教. 大家有没有遇到这样一种情况,对象赋值后,对其中一个变量进行修改,另外 ...
- c# 利用IMap 收取163邮件
最近我要做一个爬虫.这个爬虫需要如下几个步骤: 1 填写注册内容(需要邮箱注册) 2 过拖拽验证码(geetest) 3 注册成功会给邮箱发一封确认邮箱 4 点击确认邮箱中的链接 完成注册 我这里就采 ...
- centos7更改默认的python版本,安装python3.6.4
1.首先查看默认系统版本:显示为2.7.5 2.我们在root下创建一个python的文件夹用来存放我们下载的python安装包: 3.然后使用wget命令下载安装包: wget https://w ...
- EmguCV中图像类型进行转换
1. Bitmap:类型不在 Emgucv命名空间中 2. Image<TColor, TDepth> 3. Mat: 4. UMat: 高 ...
- JPA实体的常用注解
@Entity 标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类@Table 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相 ...
- Storm实践
1.Storm命令 在Linux中观直接输入Storm,不带任何参数信息,可以查看Storm命令. 参考这里 1. activate 激活指定的拓扑Spout.语法:storm activate t ...
- Django开发基础----操作数据库
Django中对数据库的操作是由Models来完成的 Models是什么? 通常,一个Model对应数据库的一张数据表 Django中Models以类的形式出现 它包含了一些基本字段以及数据的一些行为 ...