在公共函数文件写了函数 function export_excel($data,$field,$name)
然后在控制器写了一个方法 function toexcel()
我把这个方法在前台用ajax调用处错误。
$.ajax(
{
type: 'get',
url: '{:url('xsgl/toexcel')}',
dataType: 'json',
async:false,
success:function () {
alert('Ok');
},
error: function () {
alert('error');
}
});但是把这个方法toexcel()在浏览器直接调用成功的。http://host/edu/public/index/xsgl/toexcel
我跟踪检查 就是到 $writer->save('php://output'); 这一行时出错了。
这真没回事?
function export_excel($data,$field,$name)
{
$spreadsheet = new Spreadsheet();
$spreadsheet->getProperties()->setCreator("sadirjan")//创建人
->setLastModifiedBy("sadirjan")//最后修改人
->setKeywords("excel")//关键字
->setCategory("result file");//种类
$sheet = $spreadsheet->getActiveSheet();
//第一行数据
$i=0;
foreach ($field as $key => $value) {
$sheet->getColumnDimension(num2alpha($i))->setAutoSize(true);
$sheet->setCellValue(num2alpha($i).'1', $value);
$i++;
}
//填充数据
foreach($data as $k => $v){
$k=$k+1;
$num=$k+1;//数据从第二行开始录入
$i=0;
foreach($field as $key=>$value){
//$ck = num2alpha($i++) . $num;
$sheet->setCellValue(num2alpha($i++) . $num , $v[$key]);
}
}
$sheet->setTitle($name);
//$writer = new Xlsx($spreadsheet);
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$name.'.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit;
} 最佳答案