实现数据导出为.csv表格

时间:2023-12-16 09:47:32

数据导出实现步骤:

      1.查找出要导出的数据,整理为二维数组。

      2.定义导出表格的字段

      3.将整理的二维数组按导出表格定义的字段重新整理。

      4.将整理的二维数组写入服务器中已有的一个.csv文件。

      5.用封装好的方法将其下载下来。

具体代码:   

//定义导出字段
$a_a=array();
$b_a=array("姓名","手机","公司","身份证");
foreach ($b_a as $key => $v) {
//以gbk的编码方式编码,防止乱码
$b_a[$key]=mb_convert_encoding($v,"gbk");
}
$a_a[]=$b_a;
//数据库查找要导出的数据
$table_name="yijiu_members";
$info_list=ugv::mod($table_name)->query("select * from oho_".$table_name." $_search_s order by id desc ")->result_array();
foreach($info_list as $row ){
//导出身份证号码时,将其以字符串的形式导出,不然表格会将身份证号码以科学计数法的形式表示,且出现错误
$row["idcard"]="'".$row["idcard"]."'";
$b_a=array($row['isname'],$row['ismobile'],$row["iscompany"],$row["idcard"]);
foreach ($b_a as $key => $v) {
$b_a[$key]=mb_convert_encoding($v,"gbk");
}
$a_a[]=$b_a;
}
$fh = fopen(ROOT_PATH.'files/tmp/2.csv','w');
//遍历将数据写入csv文件
foreach ($a_a as $a) {
if (fputcsv($fh, $a) === false) {
die("Can't write CSV line");
}
}
fclose($fh);
$name="yijiumembers.csv";
//用封装好的方法将文件下载下来
files::down(ROOT_PATH.'files/tmp/2.csv',$name);