public function taskResultExport()
{
$ids = input('post.');
$where = [];
$where['l.id'] = ['in',$ids['id']];
$data = Db::table('cti_notifycalllog')
->alias('l')
->join('cti_notifyinfo i', 'l.notifyid = i.id' ,'LEFT')
->where($where)
->field('l.*,i.name')
->select();
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new \PHPExcel();
$PHPSheet = $objPHPExcel->getActiveSheet();
$PHPSheet->setTitle("任务结果");
$PHPSheet->setCellValue("A1", "编号")
->setCellValue("B1", "操作标记")
->setCellValue("C1", "任务ID")
->setCellValue("D1", "号码")
->setCellValue("E1", "呼叫结果")
->setCellValue("F1", "开始时间")
->setCellValue("G1", "振铃时间")
->setCellValue("H1", "应答时间")
->setCellValue("I1", "结束时间")
->setCellValue("J1", "话单ID")
->setCellValue("K1", "挂机原因")
->setCellValue("L1", "任务名称");
$PHPSheet->getColumnDimension('A')->setWidth(10);//设置宽度
$PHPSheet->getColumnDimension('B')->setWidth(15);//设置宽度
$PHPSheet->getColumnDimension('C')->setWidth(15);//设置宽度
$PHPSheet->getColumnDimension('D')->setWidth(15);//设置宽度
$PHPSheet->getColumnDimension('E')->setWidth(15);//设置宽度
$PHPSheet->getColumnDimension('F')->setWidth(25);//设置宽度
$PHPSheet->getColumnDimension('G')->setWidth(25);//设置宽度
$PHPSheet->getColumnDimension('H')->setWidth(25);//设置宽度
$PHPSheet->getColumnDimension('I')->setWidth(25);//设置宽度
$PHPSheet->getColumnDimension('J')->setWidth(25);//设置宽度
$PHPSheet->getColumnDimension('K')->setWidth(25);//设置宽度
$PHPSheet->getColumnDimension('L')->setWidth(25);//设置宽度
//左对齐
$PHPSheet->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('H')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('I')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('K')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$PHPSheet->getStyle('L')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
$d = 2;
foreach($data as $k=>$v){
switch ($v['callresult']) {
case 1:
$data[$k]['callresult'] = '振铃';
break;
case 2:
$data[$k]['callresult'] = '应答';
break;
case 3:
$data[$k]['callresult'] = '转坐席';
break;
default:
$data[$k]['callresult'] = '没振铃';
}
$PHPSheet->setCellValue("A".$d,$v['id'])
->setCellValue("B".$d,$v['optflag'])
->setCellValue("C".$d,$v['notifyid'])
->setCellValue("D".$d,$v['telno'])
->setCellValue("E".$d,$v['callresult'])
->setCellValue("F".$d,$v['starttime'])
->setCellValue("G".$d,$v['acmtime'])
->setCellValue("H".$d,$v['anctime'])
->setCellValue("I".$d,$v['endtime'])
->setCellValue("J".$d,$v['cdrid'])
->setCellValue("K".$d,$v['hangupcause'])
->setCellValue("L".$d,$v['name']);
$d++;
}
$filename = time();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '.xlsx"');
header('Cache-Control: max-age=0');
//生成xlsx文件并存入当前文件目录
//文件的位置很重要
function saveExcelToLocalFile($objWriter,$filename){
// make sure you have permission to write to directory
$filePath = $filename.'.xlsx';
$objWriter->save('excelExport/'.$filePath);
return $filePath;
}
//返回已经存好的文件目录地址提供下载
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$url = saveExcelToLocalFile($objWriter,$filename);
if ($url){
self::toJson(200,$url);
}else{
self::toJson(400,'导出失败');
}
}
//前端JS
function resultExport() {
if(str_id = checked()){
layer.confirm('确认要导出吗?',function(index){
$.ajax({
type: 'POST',
data:{id:str_id},
url: "{:url('taskResultExport')}",
dataType: 'json',
success: function(data){
if (data.code == 200){
console.log(data.msg);
document.location.href = ("/excelExport/" + data.msg);
layer.msg(data.msg,{icon:1,time:1000});
}else{
layer.msg(data.msg,{icon:0,time:1000});
}
},
error:function(data) {
console.log(data.msg);
},
});
});
}
}
最佳答案
