入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

PHP格式化导出EXCEL 【数值型字符串显示问题】

创建时间:2015-08-05 投稿人: 浏览次数:4606
  PHP在输出EXCEL表格时,经常会碰到如下问题,如有些物料编号是数字0开头的, 产生EXCEL后,会发现数字0会丢失;还有类似"1-3"这种纯文本格式的导出后会自动转 化为日期型格式。诸如此类的,都是因为如果在导出的单元格没有设定想要的格式,那 么EXCEL会以默认的格式去呈现单元格的数据。         我们可以通过如下方式去规定数据保存的格式:         1)文本:vnd.ms-excel.numberformat:@         2)日期:vnd-ms-excel.numberformat:yyyy/mm/dd         3)数字:vnd-ms-excel.numberformat:#,##0.00         4)货币:vnd-ms-excel.numberformat:$#,##0.00         5)百分比:vnd-ms-excel.numberformat:#0.00% 参考如下范例:
header("Context-type:application/vnd.ms-excel");

header("Context-Disposition:attachement;filename=outExce.xls");

echo "<table border="1" width="100%">";

echo "<tr><td style="vnd-ms-excel.numberformat:@">00-35A-00</td></tr>";

echo "</table>";

 //生成excel
    private function downloadRecordAddressInfoToExcel($records){
        $noAddressInfoCount=0;
		$address=array();
        if(is_array($records)){
            $tem_address= "<table border="1" width="100%">";
            $table_td_s="<td>";
            $table_td_number_s="<td style="vnd.ms-excel.numberformat:@">";
            $table_td_e="</td>";           
            $tem_address.= $table_td_s. "姓名".$table_td_e;
            $tem_address.=$table_td_s."地址".$table_td_e;
            $tem_address.=$table_td_s."电话".$table_td_e;
	    $tem_address.=$table_td_s. "订单号".$table_td_e;
	    $tem_address.=$table_td_s."时间".$table_td_e;
            $step=0;

            foreach($records as $k=>$record){
                $address=json_decode($record["address"],true);
                if(is_array($address)){
                    if($step<1){
                        header("Content-type:application/vnd.ms-excel;");
			Header("Accept-Ranges:bytes");
			header("Content-Disposition:filename=".$record["p_name"].".xls");
			header("Pragma: no-cache");
			header("Expires: 0");
                        $step++;
                    }
		    $tem_address.="<tr>";
                    $tem_address.=$table_td_s. $address["name"].$table_td_e.$table_td_s .$address["address"].$table_td_e.$table_td_number_s.$address["mobile"].$table_td_e;
		    $tem_address.=$table_td_number_s.$record["num"].$table_td_e.$table_td_s.date("Y-m-d H:i:s",$record["createtime"]).$table_td_e;
                    $tem_address.="</tr>";           
		}else{
                    $noAddressInfoCount++;
                    $tem_address.="<tr><td></td><td></td><td></td><td></td><td></td></tr>";
                }
            }
			
        }

        if(!empty($tem_address) &&$step>0){
			$tem_address.= "</table>";
            echo $tem_address;
        }else{
            echo "total:".count($records)." <br/>  Null data total:".$noAddressInfoCount;
        }
    }




声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。