基于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编码规范之注释和文件结构说明
Jul 09 PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
php 常用算法和时间复杂度
Jul 01 PHP
php实现分页工具类分享
Jan 09 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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 国漫
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
一个比较简单的PHP 分页分组类
2009/12/10 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
JS 对象介绍
2010/01/20 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
js获取内联样式的方法
2015/01/27 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python数组条件过滤filter函数使用示例
2014/07/22 Python
python实现将元祖转换成数组的方法
2015/05/04 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
python 定时修改数据库的示例代码
2018/04/08 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
Etam德国:内衣精品店
2019/08/25 全球购物
户籍证明格式
2014/09/15 职场文书
售房协议书范本2014
2014/10/23 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB