第一次发布自己的代码,很忐忑,但也欢迎拍砖。
项目里需要导出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);}
