php - 通过 PHPExcel、Codeigniter 和 Ajax 导出到 Excel

标签 php ajax codeigniter phpexcel

我想通过 PHPExcel 导出 xls 并使用 Codeigniter 和 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;
    }

最佳答案

代码似乎工作正常,您无法获取文件的唯一原因是允许在浏览器中弹出窗口。

关于php - 通过 PHPExcel、Codeigniter 和 Ajax 导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44615214/

相关文章:

php - fatal error :调用未定义的方法 CI_DB_mysqli_driver::result()

php - 在 get 方法路由 laravel 中允许特殊字符

php - 将 like 语句与 $wpdb->prepare 一起使用,显示通配符所在的散列

php - 如何将项目/帖子添加到收藏夹

javascript - 我的ajax表单没有提交

javascript - 如何使用除不闪烁加载以外的任何方法重新加载 iframe

php - 如何从codeigniter项目发送推送通知

php - 在 Codeigniter 3 中通过 Office365 帐户发送电子邮件 - 连接超时

php - WordPress 从自定义模板重定向

php - 如何获取所有数组元素,其中值只在数组中出现一次?