使用phpExcel类导出excel文件相关问题总结 php
Autor:xiaoqingtime:2011-04-22 app
总结一下最近使用phpexcel类导出excel 文件时遇到的问题,主要包括三大类: 函数
1.导出时提示找不到文件怎么办? post
2.导出excel时中文出现乱码的问题。 测试
3.导出数据量大时,提示内存超过最大值或者运行时间超时的问题。 字体
先看下phpexcel经常使用的方法总结(摘录自zeal_blog:http://www.zeali.net/entry/556) 大数据
使用时常见的问题总结: ui
1.关于提示找不到文件的问题: 编码
缘由可能有:缓冲区没有打开或者mb_overlod_func函数没有关闭,解决这个问题的最好办法是把php.ini中display_errors打开,下载文件,打开后会提示相应错误信息。如果后者,则须要打开php.ini文件,找到mbsrtring.func_overload=7将其隐掉。 spa
若能正常导出excel可是没有数据,则通常是程序错误(没有取到数据或数据没赋值)
2.导出excel时出现乱码的问题,这个问题网上的答案不少。主要的解决方案有:
(1).乱码缘由:客户使用的中文版Windows系统平台,而Windows平台的文件名编码为 gb2312(gbk),而咱们网页编码为了跟进现存潮流 通常都采用utf-8(国际化)编码,这时当咱们:header("Content-Disposition: inline; filename=\"" . $filename . ".xls-:special:1:-")时就会出现乱码,假如你的网页编码就是gb2312那就不用考虑编码问题了(不然转码了反而会出现乱码)。
解决办法:对$filename转码,执行:iconv('utf-8", "gb2312", $filename)。假如你的环境不支持iconv函数能够换别的函数,只要能将$filename的编码转为gbk就行。
(2):输出文件的时候加上相应的头信息:
Header('content-Type:application/vnd.ms-excel;charset=utf-8');
(3).若是以上方法仍是出现乱码,则多是输出缓冲区中有其余多余的内容,在php文件中设置excel内容之间清理一下输出缓冲区吧:<?php ob_clean();?>
以上三步基本能够涵盖到多数excel乱码的问题。
3.导出大数据时提示错误
打开php.ini文件中的display_errors,查看具体错误信息:通常状况下有两类:
(1).runtime 超过了maxium time,这个时候可能的缘由是文件中出现了死循环或者大循环。检查源码看是否有死循环。建议不要在循环体中设置excel格式,占据的时间超多。经初步测试,在循环体中设置3-4个格式,则大约1500条数据时就会出现运行超时的问题。所以尽可能把设置格式的代码放置到循环体外。若是还有问题,则有两种方法:修改ini文件,把time_limit=0;远程不能修改ini文件则须要在程序中添加set_time_limit(0);
(2).memory size of ....bytes exhausted这是典型的内存不够用的状况。如能够修改php.ini文件则找到memory_limit = 32M将其改成memory_limit = 64M或者更大128M.如是远程不能修改php.ini文件,则须要在代码中修改:@ini_set('memory_limit','128M');