基于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环境搭建最新方法
Sep 05 PHP
PHP4实际应用经验篇(2)
Oct 09 PHP
谈谈新手如何学习PHP
Dec 23 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
Nov 07 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 PHP
PHP中实现生成静态文件的方法缓解服务器压力
Jan 07 PHP
php自定义session示例分享
Apr 22 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 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
星际中的相关伤害
2020/03/04 星际争霸
单位速度在实战中的运用
2020/03/04 星际争霸
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
js常用代码段整理
2011/11/30 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
原生js生成图片验证码
2020/10/11 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
python中argparse模块用法实例详解
2015/06/03 Python
Python中类型检查的详细介绍
2017/02/13 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
大学生求职中的自我评价
2013/10/01 职场文书
大学生就业推荐信范文
2013/11/29 职场文书
教育孩子心得体会
2014/01/01 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
学校推普周活动总结
2015/05/07 职场文书