PHP-php生成excel乱码

PHP-php生成excel乱码

浮生未歇 发布于 2016-10-12 字数 405 浏览 1129 回复 5

最近在用php把产品目录导出成excel的时候,发现导出的时候用office打开excel是乱码。但是我用wps打开却不是乱码,只能手动的用wps打开,然后另存为一个新的excel,才能解决。

有没有那位高手知道怎么回事。

相关code:
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
header("Content-Disposition:attachment;filename=export_productmap.xls");
另:sql和php文件编码都是utf8

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

虐人心 2017-07-01 5 楼

我之前使用phpexcel也出现了这个问题。说实话,我没找到到底根本原因是什么,但我这里有个简单的方法:
1、涉及到
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
header("Content-Disposition:attachment;filename=export_productmap.xls");

去掉utf-8的header,将这段代码涉及到的文件改为gb2312的编码,然后保存即可。

php导出excel,我印象中只要导出utf-8的都是乱码,我都是强制将代码中的utf-8字符转换成gb2312才正常的。

甜柠檬 2017-05-18 4 楼

我在开发中,用 iconv('UTF-8','gb2312',$str)

浮生未歇 2017-04-27 3 楼

微软的xls是gb2312编码,php输出的汉字内容在header代码前要转换成gb2312编码

虐人心 2017-03-17 2 楼

关于你的问题,我有个猜想,当然只是猜想。有可能是因为UTF8编码有无BOM字符的原因。
再者我可以提供几种输出EXCEL方法,之前做过较多的这样的项目。
第一种方法:使用EXCELWRITER,但如果你的EXCEL过大,就不建议使用了,虽然它几乎支持了所有EXCEL的格式,但它所耗费的内存也是相当大的,在网上看到过一篇文章说每一个单元格要占用内存1M,可想而知,其效率是很低的,虽然提供了几种缓存技术,但效果不大。这个我做过测试。
第二种方法:输出CSV文件。这种方法在效率上是很有优势的,而且在数据格式转换上也是相当容易的。
第三种方法:我个人力荐这种方式。你可以输出TABLE标签,文件名后缀仍为XLS,如果你同时提供了表格网页显示的话,你大可将界面的代码加以重用,从而提高开发效率。这个也是这几天我发现的。并且刚刚做过实践。效果很好。只是输出的表格格式并不是很美观,当然这并不是大问题,我们要的毕竟是数据。

虐人心 2017-02-15 1 楼

这个库我也是用过,上面提到的phpwriter应该就是这里面的一个类,存在以上问题。如果要导出的EXCEL文件比较大,不建议使用这个类库,过于花哨。
建议使用比较成熟的库,比如php可以使用phpexcel:
http://phpexcel.codeplex.com/

至少我多次使用,不存在汉字或者其他字符乱码的问题,你可以尝试一下。