public function exportCSV($params,$export_flag){
try{
set_time_limit(0);
@ini_set('memory_limit','256M');
//设置好告诉浏览器要下载excel文件的headers
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel;charset=utf-8');
$file_name = 'rw_asworkorder_'.date('ymdhis',time()).'.csv';
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
$fp = fopen('php://output', 'a');//打开output流
$columns = ['序号','工单号','系统订单号','平台订单号','发货仓库','工单状态','工单类型','店铺名称','快递公司','快递单号','发起时间','结案时间','发起人','最后回复人','结案人','售后诉求','历史回复','商品编码','商品型号','商品数量','商品金额','收货人','联系方式','地址'];
foreach ($columns as $i => $v) {
$columns[$i] = iconv('utf-8', 'GBK', $v);
}
fputcsv($fp, $columns);//将数据格式化为CSV格式并写入到output流中
ob_flush();
flush();
//获取总数
$this->aftersale_work_order_model->aftersale_work_order_sql($params,$export_flag=='1' ? true :false );
$total_count = $this->db->count_all_results();
//读取数据
$limit = 10000;
$id = 1;
for ($i=0;$i<intval($total_count/$limit)+1;$i++){
$params['offset'] = $i*$limit;
$params['limit'] = $limit;
//业务需求数据
$sale_order_list = $this->aftersale_work_order_model->aftersale_work_order_search($params,$export_flag=='1' ? true : false);
foreach ($sale_order_list['records'] as $key=>$value){
$sale_order_list['records'][$key]['address_detail'] = $sale_order_list['records'][$key]['state'].$sale_order_list['records'][$key]['city'].$sale_order_list['records'][$key]['district'].$sale_order_list['records'][$key]['town'].$sale_order_list['records'][$key]['address'];
$params_answer['code'] =$sale_order_list['records'][$key]['code'];
$data_answer = $this->aftersale_work_order_messages_model->aftersale_messages_search($params_answer);
if(!empty($data_answer['records'][0]['uid_name'])){
$sale_order_list['records'][$key]['last_answer_user'] = $data_answer['records'][0]['uid_name'];
$sale_order_list['records'][$key]['last_answer_message'] = $data_answer['records'][0]['message'];
}else{
$sale_order_list['records'][$key]['last_answer_user'] = '';
$sale_order_list['records'][$key]['last_answer_message'] = '';
}
}
$records = $sale_order_list['records'];
foreach ( $records as $item ) {
$row = array($id);
array_push($row,$item['code']);
array_push($row,$item['sale_order_code']);
array_push($row,$item['platform_code']);
array_push($row,iconv('utf-8','GBK',$item['storage_name']));
//状态
switch ($item['status']){
case 1:
array_push($row,iconv('utf-8','GBK','待处理'));
break;
case 2:
array_push($row,iconv('utf-8','GBK','处理中'));
break;
case 3:
array_push($row,iconv('utf-8','GBK','待结案'));
break;
case 4:
array_push($row,iconv('utf-8','GBK','已结案'));
break;
default:
array_push($row,iconv('utf-8','GBK',' '));
break;
}
//状态
switch ($item['type']){
case 1:
array_push($row,iconv('utf-8','GBK','拦截'));
break;
case 2:
array_push($row,iconv('utf-8','GBK','丢件'));
break;
case 3:
array_push($row,iconv('utf-8','GBK','修改收货信息'));
break;
case 4:
array_push($row,iconv('utf-8','GBK','错发'));
break;
case 5:
array_push($row,iconv('utf-8','GBK','漏发'));
break;
case 6:
array_push($row,iconv('utf-8','GBK','催件'));
break;
case 7:
array_push($row,iconv('utf-8','GBK','破损'));
break;
case 8:
array_push($row,iconv('utf-8','GBK','其它'));
break;
default:
array_push($row,iconv('utf-8','GBK',' '));
break;
}
array_push($row,iconv('utf-8','GBK',$item['shop_name']));
array_push($row,iconv('utf-8','GBK',$item['delivery_name']));
array_push($row,$item['number']);
array_push($row,$item['create_time']);
array_push($row,$item['close_time']);
array_push($row,iconv('utf-8','GBK',$item['create_uid_name']));
array_push($row,iconv('utf-8','GBK',$item['last_answer_user']));
array_push($row,iconv('utf-8','GBK',$item['close_uid_name']));
array_push($row,iconv('utf-8','GBK',$item['aftersale_appeal']));
//最后回复
array_push($row,iconv('utf-8','GBK',$item['last_answer_message']));
array_push($row,$item['commodity_code']);
array_push($row,iconv('utf-8','GBK',$item['model']));
array_push($row,$item['quantity']);
array_push($row,$item['money']);
array_push($row,iconv('utf-8','GBK',$item['name']));
array_push($row,$item['mobile']);
array_push($row,iconv('utf-8','GBK',$item['address_detail']));
fputcsv($fp, $row);
$id++;
}
// 将已经写到csv中的数据存储变量销毁,释放内存占用
unset($records);
unset($sale_order_list);
ob_flush();
flush();
}
fclose($fp);
}catch (Exception $e){
print $e->getMessage();
$params = array(
'statusCode'=>100,
'message'=>$e->getMessage()
);
echo json_encode($params);
exit();
}
}
php导出数据到excel中(CI框架写的例子)
最新推荐文章于 2021-03-12 08:01:13 发布