基于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程序中的常见漏洞进行攻击
Oct 09 PHP
生成静态页面的PHP类
Nov 25 PHP
php 时间计算问题小结
Jan 04 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
使用phpQuery采集网页的方法
Nov 13 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
PHP中localeconv()函数的用法
Mar 26 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/12/30 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
Python实现的快速排序算法详解
2017/08/01 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Django实现分页功能
2018/07/02 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Jupyter加载文件的实现方法
2020/04/14 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
自动化专业本科毕业生求职信
2013/10/20 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript