解决php导出excel格式数据问题
这篇文章主要为大家详细介绍了解决php导出excel格式数据问题,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
解决2个问题:1.身份证之类的文本数据自动转为科学计数法的问题。2.中文乱码的问题
excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取 它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。 下面就列出常用的一些格式:
1) 文本:vnd.ms-excel.numberformat:@2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd3) 数字:vnd.ms-excel.numberformat:#,##0.004) 货币:vnd.ms-excel.numberformat:¥#,##0.005) 百分比:vnd.ms-excel.numberformat: #0.00%
这些格式你也可以自定义,比如年月你可以定义为:yy-mm等等。那么知道了这些格式,怎么去把这些格式添加到cell中呢?很简单,我们只需要把样式添 加到对应的标签对(即闭合标签)即可。如<td></td>,给标签对<td></td>添加样式,如 下: <td style="vnd.ms-excel.numberformat:@">410522198402161833</td>同样,我们也可以给<div></div>添加样式,也可以给<tr>< /tr>,<table></table>添加样式;当我们在父标签对和子标签对都添加样式时,数据会以哪一个样式呈现 呢?经过测试,会以离数据最近的样式呈现.
例如身份证列的<td>的样式:
echo "<td style='vnd.ms-excel.numberformat:@'>".$printable."</td>\n";
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <code> $filename =iconv( "UTF-8" , "GB2312//IGNORE" , "会员名.xls" );// date ( 'Y-m-d-H-i-s' ). ".xls" ; header( "Content-type:application/vnd.ms-excel" ); Header( "Accept-Ranges:bytes" ); Header( "Content-Disposition:attachment;filename=" . $filename ); //$filename导出的文件名 header( "Pragma: no-cache" ); header( "Expires: 0" ); echo '<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" > <head> <meta http-equiv= "expires" content= "Mon, 06 Jan 1999 00:00:01 GMT" > <meta http-equiv=Content-Type content= "text/html; charset=gb2312" > <!--[ if gte mso 9]><xml> <x:ExcelWorkbook> <x:ExcelWorksheets> <x:ExcelWorksheet> <x:Name></x:Name> <x:WorksheetOptions> <x:DisplayGridlines/> </x:WorksheetOptions> </x:ExcelWorksheet> </x:ExcelWorksheets> </x:ExcelWorkbook> </xml><![ endif ]--> </head>'; echo "<table><tr> <th> ".iconv(" UTF-8 ", " GB2312 //IGNORE","会员名")."</th> <th> ".iconv(" UTF-8 ", " GB2312 //IGNORE","账号")."</th> <th> ".iconv(" UTF-8 ", " GB2312 //IGNORE","联系人")."</th> </tr>"; foreach ( $list as $v ) { echo "<tr>" ; echo "<td>" .iconv( "UTF-8" , "GB2312//IGNORE" , $v [ "user_name" ]). "</td>" ; echo "<td style='vnd.ms-excel.numberformat:@'>" . $v [ "account_id" ]. "</td>" ; echo "<td>" .iconv( "UTF-8" , "GB2312//IGNORE" , $v [ "contact_name" ]). "</td>" ; echo "</tr>" ; } echo "</table>" ; </code> |
注:关于解决php导出excel格式数据问题的内容就先介绍到这里,更多相关文章的可以留意