在用PHP对Excel进行读取时,发现存在这样的问题,在PHP中设置编码方式:header('Content-Type:text/html; charset=gb2312');通过该设置,可以保证显示在浏览器中的中文正确显示。
但在利用PHPExcel进行Excel数据读取后,发现显示出的数据乱码:
include("PHPExcel/Classes/PHPExcel.php");
include("PHPExcel/Classes/PHPExcel/IOFactory.php");
//题库所在地址
$filePath = './file/test.xlsx';
//$filePath = './file/测试.xlsx';
//
$objPHPExcel = new PHPExcel();
/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath))
{
$PHPReader = new PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($filePath))
{
echo 'no Excel';
return ;
}
}
$objPHPExcel = $PHPReader->load($filePath);
echo '<hr />';
//获取具体的sheet有2种方式:getSheet或者getSheetByName/getActiveSheet。
$sheetData = $objPHPExcel->getSheetByName("2004")->toArray(null,true,true,true);
$values=array_values($sheetData);
print_r ($trans);
通过调整编码方式发现,PHPExcel数据只有在utf-8格式下才能正常显示。这样就存在一个问题,本身页面的编码方式只有在gb2312才能正常显示,而从Excel中读取过来的数据只有在utf-8的情况下才能读取出来,两者存在明显的冲突。
为了不出现乱码问题,对Excel读取过来的数据进行编码方式转换,即加入以下语句:
$trans=mb_convert_encoding(var_export($values,true),"gb2312","utf-8");
将进行测试后发现,页面不再出现乱码,问题解决!!!