昨天有一个需求,导出订单,实现方法,不用$.ajax或$.post方法实现,改成a标签打开新窗口url实现。
html代码:
<a class="d_btn exportorder" target="_blank" href="{:url('exportorder')}">导出订单</a>
js代码:
//导出订单时前
$(".exportorder").hover(function () {
var start_time = $("input[name='start_time']").val()
var end_time = $("input[name='end_time']").val()
var search_word = $("input[name='search_word']").val()
var url = $(this).attr("href")
if(url.indexOf("?") != -1){
//有参数
url = url.substr(0,url.indexOf("?"))
}
$(this).attr("href", url + "?search_word=" + search_word + "&start_time=" + start_time + "&end_time=" + end_time)
})
php代码:
//导出优选券订单
public function exportorder(){
$request = Request::instance();
$data = $request->param();
$where = [];
if(!empty($data["search_word"])){
$where += ["user_name | user_phone | user_address" => ["LIKE", '%' . $data["search_word"] .'%']];
}
$result = Db::table("...")
...这里省略
->select();
$xlsTitle = iconv('utf-8', 'gbk', '订单'); // 文件名称
$fileName = $xlsTitle . date('_YmdHis'); // $xlsTitle 文件名称可根据自己情况设定
$PHPExcel = new PHPExcel(); //实例化PHPExcel类,类似于在桌面上新建一个Excel表格
$PHPSheet = $PHPExcel->getActiveSheet(); //获得当前活动sheet的操作对象
$PHPSheet->setTitle('cheke'); //给当前活动sheet设置名称
$PHPSheet->setCellValue('A1', '编号')->setCellValue('B1', '名称')->setCellValue('C1', '收货人姓名')->setCellValue('D1', '收货人电话')->setCellValue('E1', '省')->setCellValue('F1', '市')->setCellValue('G1', '区')->setCellValue('H1', '收货人地址')->setCellValue('I1', '快递单号')->setCellValue('J1', '下单时间');
$sum = 2;
foreach ($result as $key => $value) {
$PHPSheet->setCellValue('A' . $sum, $value['card_id'])->setCellValue('B' . $sum, $value['cn_name'])->setCellValue('C' . $sum, $value['user_name'])->setCellValue('D' . $sum, $value['user_phone'])->setCellValue('E' . $sum, $value['user_province_cn'])->setCellValue('F' . $sum, $value['user_city_cn'])->setCellValue('G' . $sum, $value['user_district_cn'])->setCellValue('H' . $sum, $value['user_address'])->setCellValue('I' . $sum, $value['express_number'])->setCellValue('J' . $sum, $value['create_time']);
$sum++;
};
$PHPExcel->setActiveSheetIndex(0);
$PHPExcel->getActiveSheet()->setTitle("订单");
header('Cache-Control: max-age=0');
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition:attachment;filename=$fileName.xls");
$PHPExcel = \PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5');
ob_end_clean();
$PHPExcel->save('php://output');
exit;
}
以上代码自己测试,可以使用。