php导出excel
程序员文章站
2022-06-02 21:33:16
...
第一次发布自己的代码,很忐忑,但也欢迎拍砖。 项目里需要导出excel文件,在这里找到了个导出excel的代码,结果没用;自己写了个,现在发布上来,其实就是csv文件,但后缀写成了xls,糊弄下客户(太不应该了,我检讨;但是对性能和下载带宽来说这样应该是好
第一次发布自己的代码,很忐忑,但也欢迎拍砖。
项目里需要导出excel文件,在这里找到了个导出excel的代码,结果没用;自己写了个,现在发布上来,其实就是csv文件,但后缀写成了xls,糊弄下客户(太不应该了,我检讨;但是对性能和下载带宽来说这样应该是好事)。当然如果没有任何逻辑,也可以直接从数据库中导出,一般都支持的。
$rowCount = 100000; $time1=microtime(true); $data = array(); for($i=1; $i$i,'a'=>$i.'a','b'=>'b'.$i,'c'=>'c-'.$i); } $time2=microtime(true); //$header = null; //无头 //$header = array('id'=>'编号', 'a'=>'字段A', 'c'=>'字段C'); //只输出部分字段 $header = array('id'=>'编号', 'a'=>'字段A','b'=>'字段B', 'c'=>'字段C'); //全头 export2csv('test.xls', $data, $header); $time3=microtime(true); echo '数据生成:'.($time2 - $time1).'
'; echo '数据写入:'.($time3 - $time2).'
'; /* 数据生成:0.21787405014038 数据写入:2.6457920074463 */ function export2csv($path, $data, $header=null) { if(file_exists($path)) @unlink($path); if(!is_array($data)) return; $handle = fopen($path, 'a'); if(is_array($header)) { $keys = array_keys($header); $data = array_merge(array($header), $data); } else { $keys = array_keys($data[0]); } foreach($data as $row) { $rowText=''; foreach($keys as $key) { $rowText .= "\t" . $row[$key]; } $rowText = ltrim($rowText, "\t"); if(!empty($rowText)) fwrite($handle, $rowText . "\r\n"); } fclose($handle); }