phpspreadsheet 导出excel 出问题

浏览:2977 发布日期:2018/12/01 分类:求助交流
tp5.1.29+Apache2.4+php7.2.10+phpspreadsheet1.5.2
在公共函数文件写了函数 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;
          
          
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>