当前位置: 代码迷 >> PHP >> php输出excel格式的有关问题
  详细解决方案

php输出excel格式的有关问题

热度:53   发布时间:2016-04-29 00:00:54.0
php输出excel格式的问题
PHP code
<?php@$con = mysql_connect("localhost","root","mysql");mysql_query('set names gb2312');if (!$con){    die("数据库链接失败:".mysql_error());    exit;}$data = mysql_select_db("berecord",$con);//include('conn.php');//mysql_query('set names gb2312');if(!$data){    echo mysql_error();    mysql_close($con); //关闭数据库链接    exit;}else if($name=="" && $carnumber=="" && $do=="" &&  $usercode==""){    //当四项数据全为空时$sql = "select * from record;  $result = mysql_query($sql,$con);$fp = fopen("php://output","a");$head = array("年","月","日","周","姓名","年龄","班级","学号","上/下学时间","学习记录","体育成绩","学习汇报","学习总结")";foreach($head as $i => $v){    $head[$i] = iconv('utf-8','gb2312',$v);    //格式转换    //$head[$i] = mb_convert_encoding("$v","utf-8","gb2312");}fputcsv($fp,$head);while($row = mysql_fetch_array($result,MYSQL_ASSOC)){    //fputcsv($fp,array_map('zero_change',$row));    fputcsv($fp,$row);    //echo "<br>"; 没有必要 在$row输出时就实现了}mysql_close($con);}?>


我现在是这样导出csv文件的,这里导出的话是13列,但是每列的宽度都是一样的,这里我想将每列设成我想要的宽度,应该怎么调整?
还有就是学好的问题,比如我在数据库中的学号是0015132的话,mysql里的整理是utf8_general_ci,导出到csv的话,就把前面的0都给去掉了,要如何解决,谢谢

------解决方案--------------------
csv文件,不含排版信息。所以要“每列设成我想要的宽度”是不大可能的。
或许你可用空格来充填宽度

把前面的0都给去掉了 的是 excel,他把纯数字串解释成了数值
通常可在前面加单撇号
------解决方案--------------------
不要用csv格式,用Excel的XML格式

<?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=test.xls;");
?>
<table border="1">
<tr><td align="right">100</td><td>This is an example</td></tr>
<tr><td align="right">50</td><td>Do you understand?</td></tr>
</table>
------解决方案--------------------
给学号td加样式:<td style='vnd.ms-excel.numberformat:@'>******</td> 可解决少0问题
  相关解决方案