header ( "Content-type:text/csv" );
header("Expires: 0");
header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GB2312//IGNORE", "查询用户列表" ) . ".csv" );
$out = $column_name;
echo iconv ( "UTF-8", "GB2312//IGNORE", $out );
$total_export_count = $db->getResult('select count(*) as num from table ');
$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;
}