Lewis1316 2016-09-06 09:23 采纳率: 26.1%
浏览 9131

前端下载后端生成的excel文件

我想请问一下,后端生成的excel文件如何在前端下载?我下载下来之后老是乱码:这是后端生成excel文件的代码

//生成excel
function create_excel($title,$arr,$data){  
    $this->load->library('/php_excel/PHPExcel');
    // $this->load->library('/php_excel/PHPExcel/IOFactory');
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setTitle($title);
    $objPHPExcel->setActiveSheetIndex(0);  
    $type = 'Excel5';
    //发送标题强制用户下载文件
    $this->browser_export($type, $title); 
    $col = 0;
    //表头
    foreach ($arr as $k => $v){ 
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $v);
        $col++;
    }
    //循环获取的数据
    if($data){
        for($i=0;$i<count($data);$i++){
            $col = 0;
            $data_item=$data[$i];   
            foreach ($data_item as $key=>$value){
                $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $i+2, $value); 
                $col++;
            } 
        }
    } 
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,$type);  
    $objWriter->save('php://output');

} 
private function browser_export($type, $file_name){
    //发送标题强制用户下载文件
    if( $type=='Excel5' ){
        header('Content-Type: application/vnd.ms-excel;charset=UTF-8');//Excel5
        header('Content-Disposition: attachment;filename='.$file_name.'.xls');//tell browser file name 
    }else{
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8');//Excel2007
        header('Content-Disposition: attachment;filename='.$file_name.'.xlsx');//tell browser file name 
    }  
    header('Cache-Control: max-age=0');// forbid browser to cache
}

这是前端下载的代码:
$scope.downLoad = function(){ 
        var dataParams = sessionStorage.getItem('dataParams'); 
        if( !dataParams ){ return;}  
        console.log(JSON.parse(dataParams));  
        superSearchServices.downLoadExcel(JSON.parse(dataParams))
        .success(function(data){     
            var blob = new Blob([data],{'type':'application/vnd.ms-excel;charset=UTF-8'});  
            saveAs(blob,'统计excel');   
        });
    };
  • 写回答

1条回答

  • threenewbee 2016-09-06 16:11
    关注
     //设置导出文件名 
    
    $outputFileName = 'total.xls'; 
    
    $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel); 
    
    //ob_start(); ob_flush(); 
    
    header("Content-Type: application/force-download"); 
    
    header("Content-Type: application/octet-stream"); 
    
    header("Content-Type: application/download"); 
    
    header('Content-Disposition:inline;filename="'.$outputFileName.'"'); 
    
    header("Content-Transfer-Encoding: binary"); 
    
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
    
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
    
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    
    header("Pragma: no-cache"); 
    
    $xlsWriter->save( "php://output" );
    
    评论

报告相同问题?

悬赏问题

  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致