phpexcel导出文件乱码问题
以前使用phpexcel类导出xls文件时,没有发现有乱码的问题,可是今天再使用的时候就发现文件下载完成后打开时,excel提示文件的格式与文件指定的格式不一致,打开时就乱码,用记事本打开时是空的,挺无奈,于是google了一下,试了好多都不知道是什么原因,后来在不加参数在浏览器打开之后发现左上角有一个锘字,于是恍然大悟,肯定是文件或者包含的文件前面有空格,于是找了找,终于在自己的类文件里发现<?php前面有一个空格,哎!寻找的方法是以前在网上发现的,现在也忘记出处了,就是用UE,在UE的配置里,文件处理->UTF-8检测,去掉“自动检测UTF-8文件”和“检测UNICODE(UTF-16文件无BOM)”前面的勾,然后重启UE,再打开要查看的文件,就能在文件前面查看有没有类似空格的乱码。
本文地址:http://klniu.com/post/phpexcel-char/
相关文章
- 没有相关文章

2010年7月23日 08:36
查编码真是让人头疼!!- -
回复
2010年7月23日 11:42
@游客, 呵呵,我以前也这样,所以平时应该注意编码统一,查编码用 vim 或者 ultraedit 比较好。
回复
2010年7月22日 13:53
你好,我现在遇到的问题和stranger一模一样,请问下你们以前是如何解决的?谢谢
回复
2010年7月22日 17:19
@游客, 您好,当时我也折腾了N久才发现是编码的问题,先要确定的是PHP文件的编码不要有编码不统一的情况,最好是用UTF-8的编码,其次就是phpexcel的输出编码也要正确,phpexcel的文档里有说明的
回复
2010年6月18日 22:11
我也有碰见这个问题了。直接保存在服务器没问题,但一旦保存到浏览器就出现了。我也试着用楼主的方法把多余的乱码全部删除了,可还是老样子。。。
回复
2010年6月19日 07:02
@Mark, 一般这类问题都是源文件编码不同造成的,推荐的文件编码均用utf-8,您可以对所以关系到输出的源文件检测一下编码,看看是不是UTF-8,不是的话就转换成UTF-8或者你所设的全局编码,不过要注意文件内容会不会随着转换变成乱码,尤其是文件头,这个直接关系到输出。
回复
2010年5月24日 01:31
问题已经解决,兄弟谢谢你
回复
2010年5月24日 06:28
@stranger, 应该还是字符编码的问题吧,呵呵,这么晚还不睡觉,注意身体呀
回复
2010年5月24日 00:12
是不是我的PHP.INI里面要修改什么东西呢,用PHPEXCEL写入本地没有任何问题。利用HEADER用WEB下载就有了为题,还有就是用UE打开的EXCEL,第一个字符是锘字。感觉无缘无故多出来的乱码很奇怪
回复
2010年5月23日 23:58
还有就是,我如果不用web的方式下载,用PHPEXCEL直接写到服务器上,不会出现多余的乱码,没有任何问题。
您给诊断一下。
回复
2010年5月23日 23:47
程序我已经给你贴出来了,你帮忙看看程序,你以前不是也用PHPEXCEL实现过下载吗。
没有出现过乱码吗。是不是我的PHP.ini里面要修改什么东西,才不会出现那些乱码,麻烦你帮忙看看,我看了
程序,感觉程序没有什么为题。程序就是一个简单的下载程序,麻烦了。EXCEL里面什么没有写,内容也有乱码。
<?php
/**
* PHPExcel
*
* Copyright (C) 2006 – 2007 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel
* @copyright Copyright (c) 2006 – 2007 PHPExcel ( [url]http://www.codeplex.com/PHPExcel[/url])
* @license [url]http://www.gnu.org/licenses/lgpl.txt[/url] LGPL
* @version 1.5.0, 2007-10-23
*/
/** Error reporting */
error_reporting(E_ALL);
/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');
/** PHPExcel */
include 'PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';
require_once 'PHPExcel/Writer/Excel5.php';
// ¡䢤?¡§????§ҿ}
//header("Content-type: application/octet-stream;charset=utf-8.");
//header("Content-type:application/vnd.ms-excel");
//header("Content-Disposition:attachment;filename=data.xls");
// Create new PHPExcel object
//echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();
// Set properties
//echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("Test result file");
// Add some data
//echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
//$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');
//$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!');
//$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello');
//$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!');
// Rename sheet
//echo date('H:i:s') . " Rename sheet\n";
//$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
//$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 2007 file
//echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
//$objWriter->setOffice2003Compatibility(true);
//$objWriter->save(str_replace('.php', '.xls', __FILE__));
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
header("Content-Disposition: attachment;filename=data.xls");
header('Content-Transfer-Encoding: binary');
//$objWriter->save(str_replace('.php', '.xls', __FILE__));
$objWriter->save('php://output');
// Echo done
//echo date('H:i:s') . " Done writing file.\r\n";
exit();
?>
回复
2010年5月22日 20:13
老兄,我用PHPExcel导出文件时,导出到服务器上没有问题,可是通过WEB导出到本地的话,就有了问题,即使
给EXCEL里面不写东西,也有乱码,乱码里面包括下面的东西。
Root Entry F掔w?掔w?Workbook FA&
望老兄,不惜赐教。
回复
2010年5月22日 20:33
你试没试过用FTP工具下载下来看看有没有问题,如果没有问题,说明是下载的时候增加什么东西,如果也是如此的话,那就是程序的问题了
回复