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 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置