Yii2框架将数据库内容快速导出excel表的方法整理,生成csv格式表格
$jiangpin_list = $this->getmemberjiangpinlist(self::$get['id']);
$csv_name="我是表格";
self::exportCsv($jiangpin_list, $csv_name);
public function getMemberJiangpinlist($ai_id)
{
$qipamember_jiangpinwhere = " ai_id=" . $ai_id . " and is_false=0 ";
$qipamember_jiangpinay = MemberJiangpin::find()
->alias('mp')
->select(new Expression('mj.id,mj.member_id,mj.jiangpin_id,mj.status,mj.create_time,mj.update_time,mj.shop_id'))
->where($qipamember_jiangpinwhere)
->asArray()
->orderBy(' id ASC')
->all();
if (!$qipamember_jiangpinay) {
return [];
}
$prizeIds = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'jiangpin_id')))) ?: 0;
$prizeInfoTmp = AgencyPrize::find()->select("id,prize_name")->where("id in ({$prizeIds})")->asArray()->all();
foreach ($prizeInfoTmp as $k => $v) {
$prizeInfo[$v['id']] = $v['prize_name'];
}
$gudong_coupon_ids = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'id')))) ?: 0;
$orderInfoTmp = SaleOrder::find()->select("id,store_id,sale_id,create_time,gudong_brand,gudong_coupon,gudong_num,customer_name")->where("gudong_coupon in ({$gudong_coupon_ids})")->asArray()->all();
$qipauserIds = implode(",", array_unique(array_filter(array_column($orderInfoTmp, 'sale_id')))) ?: 0;
$qipauserinfoTmp = QipaUser::find()->select("id,phone")->where("id in ({$qipauserIds})")->asArray()->all();
foreach ($qipauserinfoTmp as $k => $v) {
$qipauserinfo[$v['id']] = $v['phone'];
}
foreach ($orderInfoTmp as $k => $v) {
$orderInfoTmp[$k]['qipa_user_phone'] = $qipauserinfo[$v['sale_id']];
}
foreach ($orderInfoTmp as $k => $v) {
$hxShopInfo[$v['gudong_coupon']] = $v;
}
$qipashopIds = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'shop_id')))) ?: 0;
$qipashopIds .= ',' . (implode(",", array_unique(array_filter(array_column($orderInfoTmp, 'store_id')))) ?: 0);
$qipashopIds = $qipashopIds ?: 0;
$allShopsInfo = [];
$allShopsInfoTmp = QipaShop::find()->alias("s")
->select("s.id,s.name,s.agency_id,cu.user_name,cu.phone,s.province_id,s.city_id,s.country_id")
->leftJoin("mdz_company_user cu", "cu.id=s.user_id")
->where("s.id in ({$qipashopIds})")->asArray()->all();
foreach ($allShopsInfoTmp as $k => $v) {
$allShopsInfo[$v['id']] = $v;
}
$agencyIds = implode(",", array_column($allShopsInfo, 'agency_id')) ?: 0;
$allAgencysTmp = QipaAgency::find()->alias('a')
->select("a.id,a.company_name,a.post_id,cu.user_name,cu.phone ")
->leftJoin("mdz_company_user cu", 'a.user_id=cu.id')
->where("a.id in ({$agencyIds})")
->asArray()->all();
$qipaallAgencys = [];
foreach ($allAgencysTmp as $k => $v) {
$qipaallAgencys[$v['id']] = $v;
}
$memberIds = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'member_id')))) ?: 0;
$memberInfoTmp = Member::find()->select("id,member_phone")->where("id in ({$memberIds})")->asArray()->all();
foreach ($memberInfoTmp as $k => $v) {
$memberInfo[$v['id']] = $v['member_phone'];
}
foreach ($qipamember_jiangpinay as $k => $v) {
$dataCSV['province_name'] = $allProvince[$allShopsInfo[$v['shop_id']]['province_id']];
$dataCSV['city_name'] = $allCity[$allShopsInfo[$v['shop_id']]['city_id']];
$dataCSV['country_name'] = $allCountry[$allShopsInfo[$v['shop_id']]['country_id']];
$dataCSV['agency_name'] = $qipaallAgencys[$allShopsInfo[$v['shop_id']]['agency_id']]['company_name'];
$dataCSV['agency_user_name'] = $qipaallAgencys[$allShopsInfo[$v['shop_id']]['agency_id']]['user_name'];
$dataCSV['agency_user_phone'] = $qipaallAgencys[$allShopsInfo[$v['shop_id']]['agency_id']]['phone'];
$dataCSV['shop_name'] = $allShopsInfo[$v['shop_id']]['name'];
$dataCSV['prize_name'] = $prizeInfo[$v['jiangpin_id']];
$dataCSV['win_time'] = $v['create_time'];
$dataCSV['user_mobile'] = $memberInfo[$v['member_id']];
$dataCSV['customer_name'] = $hxShopInfo[$v['id']]['customer_name'] ?: '暂无';
$dataCSV['qipa_user_phone'] = $hxShopInfo[$v['id']]['qipa_user_phone'] ?: '暂无';
$dataCSV['gudong_num'] = $hxShopInfo[$v['id']]['gudong_num'] ?: '暂无';
$dataCSV['gudong_brand'] = $hxShopInfo[$v['id']]['gudong_brand'] ?: '暂无';
$dataCSV['add_time'] = $hxShopInfo[$v['id']]['create_time'] ?: '暂无';
$dataCSV['buy_shop_name'] = $allShopsInfo[$hxShopInfo[$v['id']]['store_id']]['name'] ?: '暂无';
$data[] = $dataCSV;
}
unset($qipamember_jiangpinay);
return $data;
}
private static function exportCsv($data, $csv_name)
{
$title = [ '省份', '地级市', '区县', '奇葩250公司全称', '奇葩250联系人', '奇葩250联系电话', '店铺名称', '活动奖品', '中奖时间', '用户手机号', '顾客名称', '导购手机号', '古董型号', '古董分类', '购买时间', '下单门店'];
$fileName = $csv_name . '.csv';
$header = implode(',', $title) . PHP_EOL;
$content = '';
foreach ($data as $k => $v) {
$content .= implode(',', $v) . PHP_EOL;
}
$csvData = $header . $content;
print(chr(0xEF) . chr(0xBB) . chr(0xBF));
header("Content-type:text/csv;");
header("Content-Disposition:attachment;filename=" . $fileName);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo $csvData;
die;
}