基于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 相关文章推荐
PHP网上调查系统
Oct 09 PHP
PHP聊天室技术
Oct 09 PHP
PHP编程中字符串处理的5个技巧小结
Nov 13 PHP
php的access操作类
Apr 09 PHP
PHP获取类中常量,属性,及方法列表的方法
Apr 09 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
php封装的smarty类完整实例
Oct 19 PHP
phpfpm的作用和用法
Oct 10 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实现WEB动态网页静态
2006/10/09 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
javascript radio 联动效果
2009/03/04 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
js Calender控件使用详解
2015/01/05 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
python 判断自定义对象类型
2009/03/21 Python
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
python django事务transaction源码分析详解
2017/03/17 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
什么是servlet链?
2014/07/13 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
《学棋》教后反思
2014/04/14 职场文书
材料物理专业求职信
2014/09/01 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
中学生检讨书1000字
2014/10/28 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
爱护公物主题班会
2015/08/17 职场文书