基于PHP导出Excel的小经验 完美解决乱码问题


Posted in PHP onJune 10, 2013

我在PHP项目里要求把数据导出为Excel,并且数据中包含中文.
网上大概了解一下可是使用PHPExcel,可是相对我的需求,这个框架太复杂了.于是还是想找找简单做法.
网上发现其实最简单可以这样写,但问题是这种做法中文的编码不可靠..

<?php 
 header("Content-type:application/vnd.ms-excel"); 
 header("Content-Disposition:attachment;filename=export_data.xls"); 
 echo   "姓名"."\t";  
 echo   "繁?"."\t";  
 echo   "博客"."\t";  
 echo   "\n";  
 echo   "jason"."\t";  
 echo   "@"."\t";  
 echo   "javaeye"."\t";  
 ?>

有些同学会想到header加入字符集
header("Content-type:application/vnd.ms-excel;charset=UTF-8");

问题: 这里只是告诉浏览器要选什么字符集查看,最终我的需求还是要生成xls文件.
当然.有些同学还会想到用iconv转码.
echo iconv("当前编码","GB18030","此博客来源于javaeye,by jason");

问题: 这样文件里的汉字编码就GB18030,可是Excel这么知道用什么编码打开呢?只能完全依赖OS默认.可是如果碰到繁体BIG5这么办,还是会乱码. 所以还是不靠谱.
最后我采用phpMyAdmin的做法.用HTMLExcel, HTML我们比较熟悉,格式如下.
<html xmlns:o="urn:schemas-microsoft-com:office:office" 
 xmlns:x="urn:schemas-microsoft-com:office:excel" 
 xmlns="http://www.w3.org/TR/REC-html40"> 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 <html> 
     <head> 
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> 
         <style id="Classeur1_16681_Styles"></style> 
     </head> 
     <body> 
         <div id="Classeur1_16681" align=center x:publishsource="Excel"> 
             <table x:str border=0 cellpadding=0 cellspacing=0 width=100% style="border-collapse: collapse"> 
                 <tr><td class=xl2216681 nowrap>1234</td><td class=xl2216681 nowrap>Robbin会吐口水</td></tr> 
                <tr><td class=xl2216681 nowrap>5678</td><td class=xl2216681 nowrap>javaeye网站</td></tr> 
             </table> 
         </div> 
     </body> 
 </html>

这下可以直接echo了,又不需要iconv转码,只要设置好HTML里的Content-type(这里用的是UTF-8),是不是有舒服的感觉呢? 当然header还是要加上
header("Content-type:application/vnd.ms-excel"); 
 header("Content-Disposition:attachment;filename=export_data.xls");

一点小经验和各位同学分享一下..
PHP 相关文章推荐
一个用于网络的工具函数库
Oct 09 PHP
支持数组的ADDSLASHES的php函数
Feb 16 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
codeigniter中view通过循环显示数组数据的方法
Mar 20 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 #PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 #PHP
探讨php中防止SQL注入最好的方法是什么
Jun 10 #PHP
php防注入,表单提交值转义的实现详解
Jun 10 #PHP
PHP获取当前页面完整URL的实现代码
Jun 10 #PHP
如何判断php数组的维度
Jun 10 #PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 #PHP
You might like
PHP删除数组中空值的方法介绍
2014/04/14 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
python创建线程示例
2014/05/06 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
python实现linux下抓包并存库功能
2018/07/18 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
python Django的web开发实例(入门)
2019/07/31 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
卫校毕业生自我鉴定
2013/10/31 职场文书
优秀毕业生自荐信范文
2014/01/01 职场文书
大学生就业策划书范文
2014/04/04 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
告知书格式
2015/07/01 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS