基于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 相关文章推荐
Get或Post提交值的非法数据处理
Oct 09 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 PHP
php去除HTML标签实例
Nov 06 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
PHP滚动日志的代码实现
Jun 10 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
分析php://output和php://stdout的区别
May 06 PHP
php反射学习之依赖注入示例
Jun 14 PHP
PHP控制循环操作的时间
Apr 01 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的一个基础知识 表单提交
2011/07/04 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
JavaScript基础语法之js表达式
2016/06/07 Javascript
利用JS实现数字增长
2016/07/28 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
对Python3中的input函数详解
2018/04/22 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
物理教育专业毕业生推荐信
2013/11/03 职场文书
运动会稿件50字
2014/02/17 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
接待员岗位职责
2015/02/13 职场文书
《我是什么》教学反思
2016/02/16 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫
Android存储中最基本的文件存储方式
2022/04/30 Java/Android