- $rowCount = 100000;
- $time1=microtime(true);
- $data = array();
- for($i=1; $i<=$rowCount; $i++)
- {
- $data[] = array('id'=>$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).'<br />';
- echo '数据写入:'.($time3 - $time2).'<br />';
- /*
- 数据生成: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);
- }
- //该片段来自于http://www.codesnippet.cn/detail/1011201410935.html
来源: http://www.codesnippet.cn/detail/1011201410935.html