订单导出

项目的后台系统可能会用到这个功能,我也是第一次接触。看了许久才整明白。。。

思路:将订单数据通过数据库查出,然后将所有数据用逗号和换行拼接成一个字符串(最关键也是最麻烦的一步),最后把这个字符串以csv格式的文件下载到本地就完事啦。

1:查数据,给要导出的数据文件起名(xxx.csv)

2:各种拼接数据

3:下载文件

贴出例子:

#########################################################################################    

case "new_export_order":
$list = $cls_order->new_export_order();
$order_list = $list;
$add_date = date("Y-m-d");
$csv_name = $add_date.".csv";
$str = "";
if($order_list){

$str .= "商品名称,";
$str .= "商品个数,";
$str .= "商品SKU,";
$str .= "商品单价,";
$str .= "订单号,";
$str .= "买家姓名,";
$str .= "联系方式,";
$str .= "买家昵称,";
$str .= "nessoft ID,";
$str .= "支付时间,";
$str .= "订单金额,";
$str .= "订单状态,";
$str .= "收货地址,";
$str .= "关联活动,";
$str .= "活动备注,";
$str .= "活动凭证,";
// $str .= "标记,";
$str .= " ";
foreach($order_list AS $key => $value) {
$sql = "SELECT B.name, C.other_cfg, C.activity_pic FROM orbase AS A, base_activity AS B, relation AS C WHERE A.id = C.order_id AND C.activity_id = B.id AND A.id = '{$value['id']}' ";
$order_activity_info = $GLOBALS['DB']->get_results($sql);
$activity_name = '';
$other_cfg = '';
$activity_pic = '';
if($order_activity_info) {
foreach ($order_activity_info as $KKK => $VVV) {
$activity_name .= "{$VVV['name']} ";
$other_cfg .= "{$VVV['other_cfg']} ";
$activity_pic .= "{$VVV['activity_pic']} ";
}
}
$pay_time = $value['pay_time'] > 0 ? date("Y-m-d H:i:s",strtotime($value['pay_time'])) : '未付款';
$str .= " {$value['title']},";
$str .= " {$value['num']},";
$str .= " {$value['outer_sku_id']},";
$str .= " {$value['item_payment']},";
$str .= " {$value['tid']},";
$str .= " {$value['receiver_name']},";
$str .= " {$value['receiver_mobile']},";
$str .= " {$value['buyer_nick']},";
$str .= ""{$value['nespresso_no_id']}",";
$str .= " $pay_time,";
$str .= " {$value['payment']},";
foreach ($GLOBALS ['ORDER_STATUS'] as $status_key => $status_value) {
if($value['order_status'] == $status_key) {
$order_list[$key]['order_status'] = $status_value;
}
}
$str .= " {$order_list[$key]['order_status']},";
$str .= " {$value['receiver_state']}{$value['city']}{$value['district']}{$value['address']}{$value['zip']},";
$str .= ""{$activity_name}",";
$str .= ""{$other_cfg}",";
$str .= ""{$activity_pic}",";
// if($value['offline_active_tag'] > 0) {
// $sql = "SELECT active_tag FROM base_activity_rule WHERE id = '{$value['offline_active']}' ";
// $active_tag = $GLOBALS['DB']->get_var($sql);
// $str .= ""{$active_tag}{$value['offline_active_tag']}",";
// }else {
// $str .= ",";
// }
$str .= " ";
}

}
header("Content-type: application/octet-stream; charset=utf-8");
header("Accept-Ranges:bytes");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=".$csv_name);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
$str = mb_convert_encoding($str,"GBK","UTF-8"); //将这个字符串转码  从UTF8转为GBK格式
echo $str;
break;

######################################################################################

其中     表示换行且回到下一行的最前端
     表示换行
     表示移至下一列

原文地址:https://www.cnblogs.com/xionghao/p/6743685.html