2017-06-18 3 views
2

Ich möchte xls Export von PHPExcel haben und verwenden Codeigniter und AJAX, aber ich nicht jede Datei erhalten, bitte helfen Sie mirExport nach Excel von PHPExcel und Codeigniter und Ajax

HTML-Code für Schaltfläche:

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

Mein aJAX-Code läuft gut, aber nicht für mich jede Datei erstellen:

<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> 

Meine Contoroler ohne ajax gut läuft:

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

werden Sie am für diesen Beitrag. Ich falle in das gleiche Problem und bekomme keine Lösung. – Mahantesh

Antwort

0

Ich reparierte dieses Problem mit Ersetzen Sie diesen Header älteren Header in meinem Controller:

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

Code Scheint und funktioniert gut, nur der Grund, warum Sie keine Datei erhalten können, ist Popup-Fenster in Ihrem Browser zu erlauben.

+0

Dieses Problem bezieht sich nicht auf POP-UP, aber ich aktiv POP-UP und wenn ich diese Seite ausführen, wird der Abschnitt Fehler von AJAX-Code ausgeführt und zeigen Sie mir 1 Warnung, die dies in Fehler ajax und in der Browser-Konsole für create_result gefunden() -Funktion nur anzeigen: ÏÏà ± á; þÿ \t ÔþÿÿÿÕÖ × ØÙÚÛÜÞÞßàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ –