PHPExcel + Codeigniter:无效的字符

时间:2014-03-23 09:40:07

标签: php mysql codeigniter phpexcel

我正在尝试使用PHPExcel和Codeigniter导出excel文件为this

我无法下载excel文件,但输出显示在控制台中,且字符无效。 这是控制台输出的屏幕截图。

enter image description here

2 个答案:

答案 0 :(得分:2)

1。第一个解决方案

我有同样的问题。 使用由Eliselab开发的类

https://github.com/EllisLab/CodeIgniter/wiki/Export-to-Excel-2013

对于导出,您只需将其放在控制器上即可。

$this->load->library('export');
$this->load->model('YourModel');

$result = $this->YourModel->YourQueryFunction();
$this->export->to_excel($result, 'nameForFile');

2。第二种方式

如果你想使用PHPExcel尝试在你的所有页面上放置相同的字符集, 文件字符集&内容charset。 (UTF-8)

将它放在您的文件标题上:

header('Content-Type: text/html; charset=utf-8');

并更改UTF-8 Without Bom

中的文件类型

在Nodepadd ++上转到:

  

点击“格式”   选择“在没有BOM的UTF-8中编码”

我希望它会对你有所帮助。

答案 1 :(得分:2)

我使用以下代码创建了excel文件,但它确实有效。请确保正确设置标题。

    $this->load->library('Excel');

    $objPHPExcel = new PHPExcel();

    $objPHPExcel->getProperties()->setCreator("Creator name");
    $objPHPExcel->getProperties()->setLastModifiedBy("Creator name");
    $objPHPExcel->getProperties()->setTitle("File Title");
    $objPHPExcel->getProperties()->setSubject("Content Subject");
    $objPHPExcel->getProperties()->setDescription("Content Description");
    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->setTitle('Sheet Title');
    $filename = 'sample_' . time() . '.xls'; //save our workbook as this file name
    header('Content-Type: application/vnd.ms-excel'); //mime type
    header('Content-Disposition: attachment;filename="' . $filename . '"'); //tell browser what's the file name
    header('Cache-Control: max-age=0'); //no cache
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');

    exit;