2017-06-18 257 views
2

我想有由PHPExcel XLS出口和使用笨和AJAX,但我沒有得到任何文件,請幫我導出到Excel通過PHPExcel和笨和Ajax

HTML代碼按鈕:

<button class="buttonExcel" id="ButtonExcel" onclick="getExcel()" ></button> 

我的AJAX代碼運行良好,但不創建任何文件對我來說:

<script> 
function getExcel() 
    { 
     $.ajax({ 
         url:'<?=base_url();?>tops/posts/create_result', 
         destroy: true, 
         type: 'POST', 
         data: '', 
         beforeSend: function() { 
          $("#ButtonExcel").removeClass("buttonExcel"); 
          $("#ButtonExcel").addClass("buttonExcel-getExcel"); 
          $("#ButtonExcel").blur(); 
         }, 
         success: function(response){ 


           window.open('<?=base_url();?>tops/posts/create_result','_blank'); 
        }, 
         error: function(){ 
          alert("error when get data"); 

         } 
       }); 
     } 

</script> 

我Contoroler沒有Ajax運行良好

public function create_result() 
    { 

     set_time_limit(600); 
     $this->load->model('tops/Posts_model'); 
     $list = $this->Posts_model->create_result(); 


     require(APPPATH."third_party/PHPExcel-1.8/Classes/PHPExcel.php"); 
     require(APPPATH."third_party/PHPExcel-1.8/Classes/PHPExcel/Writer/Excel5.php"); 

     $objPHPExcel = new PHPExcel(); 

     $objPHPExcel->getProperties()->setCreator(""); 
     $objPHPExcel->getProperties()->setLastModifiedBy(""); 
     $objPHPExcel->getProperties()->setTitle(""); 
     $objPHPExcel->getProperties()->setSubject(""); 
     $objPHPExcel->getProperties()->setDescription(""); 

     $objPHPExcel->setActiveSheetIndex(0); 

     $sheet = $objPHPExcel->getActiveSheet(); 

     $sheet->setCellValue("A1","text"); 
     $sheet->setCellValue("B1","time"); 
     $sheet->setCellValue("C1","date"); 
     $sheet->setCellValue("D1","type"); 
     $sheet->setCellValue("E1","view"); 

     $row = 2; 

     foreach ($list as $key => $value) 
     { 

      $sheet->setCellValue("A".$row,$value['MsgText']); 
      $sheet->setCellValue("B".$row,$value['MsgTime']); 
      $sheet->setCellValue("C".$row,$value['MsgDate']); 
      $sheet->setCellValue("D".$row,$value['MsgType']); 
      $sheet->setCellValue("E".$row,$value['CountView']); 
      $row++; 
      } 

     $filename = "Task-Exportet-on-".date("Y-m-d-H-i-s").".xls"; 
     $sheet->setTitle("Task-Overview"); 

     header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); //mime type 
     header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name 
     header('Cache-Control: max-age=0'); 


     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
       //force user to download the Excel file without writing it to server's HD 
     $objWriter->save('php://output'); 
     set_time_limit(30); 
     exit; 
    } 
+0

將您發佈此答。我陷入了同樣的問題,沒有得到任何解決方案。 – Mahantesh

回答

0

我解決了這個問題,在我的控制器替換這個頭年長標題:

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download");; 
header("Content-Disposition: attachment;filename=$filename"); 
0

代碼似乎並且工作正常,只有你無法獲取文件的原因是允許在瀏覽器中彈出窗口。

+0

這個問題與POP-UP沒有關係,但是我活躍的彈出窗口,當我運行這個頁面時,AJAX代碼的Error部分正在運行並向我顯示1個警報,該警報位於錯誤ajax中,並且在瀏覽器控制檯中用於create_result ()函數只顯示:ÐÏࡱ±;þÿ\tÔþÿÿÿÕÖ×ØÙÚÛÜÝÞßàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ –