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