我有这个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”。
代码有什么问题?非常感谢任何帮助。
答案 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'] );