【问题标题】:Make Excel file using PHPExcel and AJAX使用 PHPExcel 和 AJAX 制作 Excel 文件
【发布时间】:2023-04-01 08:46:01
【问题描述】:

我有这个 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”。

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

【问题讨论】:

  • 首先检查 $val = $this->input->post('data'); $val 中是否包含任何值?
  • 我认为应该是data: { 'data' : test },,正如你所期望的那样。
  • @Mayank:有没有简单的方法来检查控制器中的 $val?
  • @Ekn : 仍然显示 FALSE
  • 只需回显 $val 并退出。

标签: php ajax codeigniter phpexcel


【解决方案1】:

这是一个相当古老的问题,因此您可能已经解决了它,但从查看代码来看,您似乎希望您的帖子数组包含一个名为 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');
                }
        });

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多