但导出的单元格数一旦大于150了,导出的excel文件就打不开,打开的时候报错“找到无法读取的内容”
请问这是有什么限制吗,或者要怎样才能解决这个问题?
回复讨论(解决方案)
虽然 excel 确有单元格数的限制,但怎么也不会是只有150这么小
你应该检查你的程序是否在执行到相关地方出现了错误
当然也可能是你可用的内存实在是太小了
在不增加可用内存的情况下,也可以采用文件缓存的方式缓解这一矛盾
程序没有问题,我点我肯定,
很简单的测试办法,首先数据内容我先全部设定为一样的值,然后只导出一行,没问题,导出二行,没问题。。。直到导出的行数够大,就报错了
如果是程序问题,倒还有帮助你排错的可能性
否则你只有自己看着办了
很大可能是你程序的问题.
1:lz可以去stackoverflow或者phpexcel官网发帖
2:lz可以贴代码让斑竹给你指点指点
跟程序没问题,我在想是不是跟php的配置有什么关系
大家帮我看看最后保存文件的代码有问题没:
header('content-type: application/vnd.ms-excel; charset=utf-8');
header('content-disposition: attachment; filename='.urlencode($filename));
header(content-transfer-encoding: binary);
header(cache-control: must-revalidate, post-check=0, pre-check=0);
$objwriter = phpexcel_iofactory::createwriter($objphpexcel, 'excel5');
$objwriter->save('php://output');
谁有php+phpexcel的环境帮我测试一下,测试代码如下:
setactivesheetindex(0);
$objactsheet = $objphpexcel->getactivesheet();
for ($i=0;$i $objactsheet->setcellvaluebycolumnandrow(0,$i+1,'ok');
}
$filename = 文件名.xls;
header('content-type: application/vnd.ms-excel; charset=utf-8');
header('content-disposition: attachment; filename='.urlencode($filename));
header(content-transfer-encoding: binary);
header(cache-control: must-revalidate, post-check=0, pre-check=0);
$objwriter = phpexcel_iofactory::createwriter($objphpexcel, 'excel5');
$objwriter->save('php://output');
exit;
?>
经过我的测试,行数改为216的时候下载下来的excel文件就有问题了,215的时候就ok
for ($i=0;$i $objactsheet->setcellvaluebycolumnandrow(0,$i+1,'ok');
}
使用ini_set把php的可用内存提高点?
我的导出10多万条数据都没问题
终于解决了,原来是我下载的phpexcel有问题,重新去官网下载了1.7.8版本后覆盖本地,一切ok,哈哈,开心啊,谢谢各位,散分
其实是这样的。
如果你直接进到服务器上去打开这个文件,而不是下载,你会发现一切正常。
问题只出现在下载的文件中。
因此,真正的问题不是phpexcel的代码,而是你写的php实现文件下载部分的代码。
而这里的问题一般是:在实现下载部分的代码最后,没有return true;造成的。