基于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
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
学习PHP的数组总结【经验】
May 05 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
php合并数组并保留键值的实现方法
Mar 12 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/08 国漫
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
利用javascript查看html源文件
2006/11/08 Javascript
Convert Seconds To Hours
2007/06/16 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
Python print不能立即打印的解决方式
2020/02/19 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
内业资料员岗位职责
2014/01/04 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
话题作文之自信作文
2019/11/15 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis
利用Apache Common将java对象池化的问题
2022/06/16 Servers