使用PHPExcel和AJAX创建Excel文件

时间:2016-08-22 04:54:40

标签: php ajax codeigniter phpexcel

我有这个AJAX函数将数据发送到PHPExcel:

$("#btn_excel").on('click',function(e){
        var test    = "This is my Var";

        $.ajax({
                type: "POST",
                url: "<?php echo site_url('con_atk/excel_pembebanan'); ?>",
                cache: false,
                data: test,
                success: function(response)
                {
                    window.open('<?php echo site_url('con_atk/excel_pembebanan'); ?>','_blank');
                }
        });
});

这是我的控制者:

public function excel_pembebanan()
    {      
        $this->load->library('Excel');

        $val = $this->input->post('data');

        $this->excel->setActiveSheetIndex(0);
        $this->excel->getActiveSheet()->setTitle('Laporan Pembebanan');


        $this->excel->getActiveSheet()->setCellValue('A1', $val );
        $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20);


        $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
        $filename= "cabe.xls'"; 
        header('Content-Type: application/vnd.ms-excel'); 
        header('Content-Disposition: attachment;filename="'.$filename.'"'); 
        header('Cache-Control: max-age=0'); 
        $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');  
        $objWriter->save('php://output');
    }

代码成功生成excel文件。但是在单元格中写入的值是“FALSE”。值应为“This is my Var”。

代码有什么问题?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是一个相当古老的问题,所以你可能已经解决了它,但是从查看代码看起来你期望你的帖子数组包含一个名为data的字段,但你还没有上传任何具有该名称的内容。您的整个发布内容只包含短语&#34;这是我的Var&#34;因此根本没有名称可以引用它。如果您不想按照发送数据的方式整理我们,请尝试修改:

$val = $this->input->post('data');

为:

$val = file_get_contents('php://input');

这将为您提供原始发布的数据,这些数据应该只是您发送的字符串。如果你喜欢更整洁的东西,那么将你的AJAX调用改为:

$.ajax({
                type: "POST",
                url: "<?php echo site_url('con_atk/excel_pembebanan'); ?>",
                cache: false,
                data: { 'data' : test },
                contentType: 'application/json; charset=utf-8',
                success: function(response)
                {
                    window.open('<?php echo site_url('con_atk/excel_pembebanan'); ?>','_blank');
                }
        });

然后在控制器中进行$ val赋值:

$val = json_decode(trim(file_get_contents('php://input')), true);
然后

意味着您可以使用以下命令写入单元格:

$this->excel->getActiveSheet()->setCellValue('A1', $val['data'] );