php - 使用 PHPExcel 和 AJAX 制作 Excel 文件

标签 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');
                }
        });
});

这是我的 Controller :

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”。该值应为“这是我的 Var”。

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

最佳答案

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

$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');
                }
        });

然后在您的 Controller 中进行 $val 赋值:

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

这意味着您可以使用以下方式写入单元格:

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

关于php - 使用 PHPExcel 和 AJAX 制作 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39071640/

相关文章:

PHP "list"问题 : Why the result is in reverse order?

php - 动态列 php、mysql 和 DataTables

ajax - Spring Security 3-Ajax注销

php - 使用 session 数据用户 ID 进行条件检查在 Codeigniter 中不起作用的情况

php - 如何在 2 列 Bootstrap 2.32 布局的右列中修复表单

Php,如何 "safe"JSON 编码一个数组?

php - 为什么我的自定义密码重置链接被视为无效?

javascript - $这会被快速连续的点击覆盖

javascript - document.getElementById(somevar)不工作

javascript - javascript 内部需要更改隐藏输入字段的值