php用csv导出大数据

header ( "Content-type:application/vnd.ms-excel" );  
header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GB2312//IGNORE", "查询用户列表" ) . ".csv" );     
$out = $column_name;  
echo iconv ( "UTF-8", "GB2312//IGNORE", $out );  
 
$pre_count = 20000;  
for ($i=0;$i<intval($total_export_count/$pre_count)+1;$i++){  
    $export_data = $db->getAll($sql." limit ".strval($i*$pre_count).",{$pre_count}");  
    foreach ( $export_data as $key => $item ) {  
        echo iconv ( "UTF-8", "GB2312//IGNORE", $item[0] ).',';

        echo iconv ( "UTF-8", "GB2312//IGNORE", csvHandlerStr($item[1]) ).",\n";  //如果内容里有设计逗号,需要转换
    }  
      
    // 将已经写到csv中的数据存储变量销毁,释放内存占用  
       unset($export_data);  
}  
 
exit (); 

function csvHandlerStr( $string ) {
    //csv格式如果有逗号,整体用双引号括起来;如果里面还有双引号就替换成两个双引号,这样导出来的格式就不会有问题了
    //如果有逗号
    if ( strpos( $string, ',' ) ) {
        //如果还有双引号,先将双引号转义,避免两边加了双引号后转义错误
        if ( strpos( $string, '"' ) ) {
            $string = str_replace( '"', '""', $string );
        }
        //在将逗号转义
        $string = '"' . $string . '"';
    }

    return $string;
}

猜你喜欢

转载自my.oschina.net/u/2608562/blog/1626007