之前曾经写过一遍关于PHP读取EXCEL时出现中文乱码的解决办法的文章,里面给出一个函数,可以进行编码转换,不过
那个方法不是太好,每次都得对单元格使用那个函数,而且偶尔还是会有乱码。

原理就不分析了,直接给出解决办法。

其实我用的EXCEL读取类类名是Spreadsheet_Excel_Reader,它本身支持设置输出的编码,以前一直没发现。

设置方法:

$myReader = new Spreadsheet_Excel_Reader();
$myReader->setOutputEncoding('GBK'); //GBK或者GB2312
$myReader->read("1.xls");

相比原来只添加了第二行代码,而且一劳永逸。

也有人说这样设置

$myReader = new Spreadsheet_Excel_Reader("1.xls",true,"GBK");

经测试,不管用,可能这个类的版本问题吧。

另外附上PHP excelreader类的下载链接