基于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写入数据库类代码分享
Jul 26 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
php define的第二个参数使用方法
Nov 04 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
Jan 07 PHP
php session 写入数据库
Feb 13 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
浅析php如何实现爬取数据原理
Sep 27 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
实例解析php的数据类型
2018/10/24 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
django rest framework 自定义返回方式
2020/07/12 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
python实现计算图形面积
2021/02/22 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
幼儿园老师寄语
2014/04/03 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
合同范本之电脑出租
2019/08/13 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
js前端图片加载异常兜底方案
2022/06/21 Javascript