//处理订单状态
$fileName= "订单列表";
$header= [
'订单状态',
'订单类型',
'结算状态',
'主订单号',
'子订单号',
'供应商ID',
'供应商',
'订单采购金额',
'订单销售金额',
'售后退款金额',
'用户id',
'会员等级',
'收货人',
'收货电话',
'收货地址',
'商品SKU',
'商品名称',
'规格',
'商品分类',
'品牌',
'销售类型',
'数量',
'销售单价',
'销售总价',
'采购单价',
'采购总价',
'下单时间',
'支付时间',
]; //表头信息
$fields= [
'orderStatusName',
'afterSaleStr',
'billStatus',
'orderNumber',
'parcelNumber',
'goodsSupplierId',
'supplierName',
'allGoodsPurchasingPrice',
'totalAmt',
'refundAmt',
'userId',
'memberLevelStr',
'consignee',
'mobile',
'codeStringInfo',
'skuId',
'orderDetailTitle',
'goodsSpecification',
'goodsTypeThreeName',
'brandName',
'activityName',
'goodsNum',
'goodsTotalAmtE2',
'totalAmtE2',
'goodsPurchasingPriceE2',
'goodsPurchasingPriceE2Total',
'createdAt',
'payTimeStr',
];
//设置header
$header= array_combine($fields,$header);
BaseFormModel::csvExport($data, $header, [], $fileName, true, 'utf-8');
/**
* 导出csv
* @param array $data 数据
* @param array $headers csv标题+数据
* @param array $specHeaders 需要转成字符串的数组下标
* @param string $fileName 文件名称
* @param bool $isFirst 是否只去第一条
* @param string $fontType 需要导出的字符集 csv默认为utf-8
* @author zhaohao
* @date 2019-12-10 11:38
*/
public static function csvExport(array $data, array $headers, $specHeaders = [], $fileName = '',$isFirst = false, $fontType = 'gbk//IGNORE') {
//终端导出无需header头
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fileName.'.csv"');
header('Cache-Control: max-age=0');
$fp= fopen('php://output','a');
foreach ($headers as $key=> $value) {
$headers[$key] = mb_convert_encoding($value, $fontType, 'utf-8');
}
if($isFirst){
fputcsv($fp, $headers);
}
//计数器
$num= 0;
$limit= 50000;
//逐行取出数据,不浪费内存
$count= count($data);
for ($i= 0; $i< $count; $i++) {
$num++;
if ($limit%200 == $num) {
ob_flush();
flush();
$num= 0;
}
$row= $data[$i];
$ret= [];
foreach ($headers as $key=> $value) {
if(!empty($specHeaders) && in_array($key,$specHeaders)){
$ret[$key] = mb_convert_encoding($row[$key], $fontType, 'utf-8')."\t";
}else{
$ret[$key] = mb_convert_encoding($row[$key], $fontType, 'utf-8');
}
}
fputcsv($fp, $ret);
}
unset($data);
unset($ret);
fclose($fp);
exit;
}