基于PHP导出Excel的小经验 完美解决乱码问题_php技巧

我在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");

一点小经验和各位同学分享一下..

时间: 2024-08-24 03:37:40

基于PHP导出Excel的小经验 完美解决乱码问题_php技巧的相关文章

hyperlink-关于 POI 导出EXCEL 中 HyperLink 设置中文地址乱码

问题描述 关于 POI 导出EXCEL 中 HyperLink 设置中文地址乱码 请问大家一个问题,我在使用POI 3.6 的时候, 在为单元格添加HyperLink的时候,遇到添加 中文连接乱码问题,例如我的链接地址是:/file/这是PDF.PDF 在EXCEL中就会变为/file/??PDF.PDF 请问如何解决? 解决方案 http://www.iteye.com/problems/70541

asp导出excel文件最简单方便的方法_应用技巧

由于excel软件能识别table格式的数据,所以asp只需要输出table格式的html代码,同时设置好contenttype,增加保存为附件的响应头即可将输出的html代码保存为xls文件. asp导出excel文件源代码如下: 复制代码 代码如下: <% Response.ContentType = "application/excel" Response.AddHeader "Content-Disposition", "attachment

GridView中日期不显示时分秒的完美解决方法_实用技巧

两种处理方式: 1.模版列:假设数据表的字段completeTime的类型为时间格式 <asp:TemplateField HeaderText="时间"> <ItemTemplate> <%#Eval("completeTime", "{0:yyyy-MM-dd}")%> </ItemTemplate> </asp:TemplateField> 2.绑定列: <asp:Bound

Asp.net导出Excel/Csv文本格式数据的方法_实用技巧

刚刚开始做Excel相关的项目,所以遇到的问题不管大小都给记录一下 偶然的机会在添加数据的时候全改成了数字,结果输出的时候全自动变成了科学计数法,这是excel的强大功能,能自动识别数字和字符串,太聪明了反而有些麻烦,就像如果输入身份证(18位数字)的话那就不行了.超过了11位呢,下面查了些资料总结一下解决方案: 方法1: 在往excel中添加数据的时候在数据的前面加 单引号,我的是这个方法解决的 如:Sheet.Cells[iRow, iCol] ="'"+ ds.Tables[0]

基于php实现的php代码加密解密类完整实例_php技巧

本文实例讲述了基于php实现的php代码加密解密类.分享给大家供大家参考,具体如下: php 代码加密类,大家可以根据自己的需求进行修改,原类如下,该实例在ubuntu下测试没有问题. <?php class Encryption{ private $c='';//存储密文 private $s='',$q1,$q2,$q3,$q4,$q5,$q6;//存储生成的加密后的文件内容 //如果不设置一个值,isset会表示不存在: private $file='';//读取文件的路径 private

php基于curl实现随机ip地址抓取内容的方法_php技巧

本文实例讲述了php基于curl实现随机ip地址抓取内容的方法.分享给大家供大家参考,具体如下: 使用php curl 我们可以模仿用户行为,既可以设置我们访问的ip及浏览器信息还可以设置post方式. curl是一个特别牛逼的东西!~ 居然还可以生成随机的ip来访问,甚至可以让服务器分辨不出真实ip.这个很牛!有人说这个是不算bug的bug.不过有这个功能也给我们带来了很大的方便. php基于curl实现随机ip访问: <?php function curl($url,$ifpost = 0,

php基于双向循环队列实现历史记录的前进后退等功能_php技巧

本文实例讲述了php基于双向循环队列实现历史记录的前进后退等功能.分享给大家供大家参考.具体如下: 为实现一个记录操作历史的功能 1. 和撤销,反撤销功能类似的一个功能.(实现操作的前进后退) 2. 和discuz论坛登录后查看帖子(可以前进后退查看过的帖子,还有帖子查看历史记录) 3. 逻辑和windows资源管理器地址栏前进后退功能一样. 根据这种需要,实现了一个数据结构.写了一个通用的类,暂叫历史记录类吧. [原理和时钟类似.实例化对象时可以构造长度为N(可以根据需要定长度)个节点的环]

PHP基于phpqrcode生成带LOGO图像的二维码实例_php技巧

本文实例讲述了PHP基于phpqrcode生成带LOGO图像的二维码.分享给大家供大家参考.具体如下: 这里PHP使用phpqrcode生成带LOGO图像的二维码,使用起来很方便,代码中含 生成不带Logo的标准二维码和生成带Logo的二维码,可根据注释修改使用. <?php include ('phpqrcode.php'); $value = 'http://www.codesc.net';//二维码数据 $errorCorrectionLevel = 'L';//纠错级别:L.M.Q.H

php版微信小店调用api示例代码_php技巧

本文实例讲述了php版微信小店调用api的方法.分享给大家供大家参考,具体如下: 刚开始调用微信小店api的时候,可能大家会遇到问题.系统总是提示system error,归根结底还是发送的参数不正确. 下面给出几个调用例子: 例子写得不全. <?php function cUrlRequest($url,$data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CU