PHPExcel+Codeigniter:无效字符

PHPExcel+Codeigniter:无效字符,php,mysql,codeigniter,phpexcel,Php,Mysql,Codeigniter,Phpexcel,我正在尝试使用PHPExcel和Codeigniter作为导出excel文件 我无法下载excel文件,但控制台中显示的输出带有无效字符。 这是控制台输出的屏幕截图 1.第一种解决方案 我也有同样的问题。 使用Eliselab开发的类 对于导出,您只需要将其放在控制器上 $this->load->library('export'); $this->load->model('YourModel'); $result = $this->YourModel->Yo

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

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

1.第一种解决方案 我也有同样的问题。 使用Eliselab开发的类

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

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

$result = $this->YourModel->YourQueryFunction();
$this->export->to_excel($result, 'nameForFile');
2.第二条路 如果要使用PHPExcel,请尝试在所有页面上放置相同的字符集, 文件字符集和内容字符集。UTF-8

将此文件放在您的文件头上:

header('Content-Type: text/html; charset=utf-8');
并更改不带Bom的UTF-8中的文件类型

在Nodepadd++上,转到:

点击格式 选择不带BOM的UTF-8编码

我希望它能帮助你。

1。第一种解决方案 我也有同样的问题。 使用Eliselab开发的类

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

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

$result = $this->YourModel->YourQueryFunction();
$this->export->to_excel($result, 'nameForFile');
2.第二条路 如果要使用PHPExcel,请尝试在所有页面上放置相同的字符集, 文件字符集和内容字符集。UTF-8

将此文件放在您的文件头上:

header('Content-Type: text/html; charset=utf-8');
并更改不带Bom的UTF-8中的文件类型

在Nodepadd++上,转到:

点击格式 选择不带BOM的UTF-8编码


我希望它能对您有所帮助。

我用以下代码创建了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;

我用下面的代码创建了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;


您是否尝试使用MS excel打开该文件以确保它是有效文件?我怀疑是的,关于附件图像,这是因为终端不能用于查看excel文件,因此它们被视为二进制文件。我什么也看不见?:@Ma'moonAl-Akash:我尝试过强制下载,但没有下载。我正在使用open officecalc@ferozakbar如果您的问题仅仅是检查文件的有效性,然后使用任何工具scp、ftp、wget从服务器获取文件,那么就没有什么可看的了。。。etc,然后使用openoffice工具进行验证您是否尝试使用MS excel打开该文件以确保它是有效文件?我怀疑是的,关于附件图像,这是因为终端不能用于查看excel文件,因此它们被视为二进制文件。我什么也看不见?:@Ma'moonAl-Akash:我尝试过强制下载,但没有下载。我正在使用open officecalc@ferozakbar如果您的问题仅仅是检查文件的有效性,然后使用任何工具scp、ftp、wget从服务器获取文件,那么就没有什么可看的了。。。等等,然后用你的openoffice工具验证它。你能用第二种方式解释更多细节吗?我是新手,我已经编辑了我的答案。查看如何更改字符集:能否上载屏幕或错误。我想知道^^您尝试导出哪种类型的数据?在我的示例应用程序中,硬编码数据,如所讨论的链接。但在将来的mysql表格中,你能用第二种方式解释更多细节吗?我是新手,我已经编辑了我的答案。查看如何更改字符集:能否上载屏幕或错误。我想知道^^您尝试导出哪种类型的数据?在我的示例应用程序中,硬编码数据,如所讨论的链接。但将来从mysql表