phpExcel导出excel的两个问题

hu5487 2013-01-10 11:00:28
Notice: iconv_strlen() [function.iconv-strlen]: Detected an illegal character in input string in E:\test\PHPnow-1.5.6\vhosts\127.0.0.18\inc\PHPExcel\PHPExcel\Shared\String.php on line 554

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16 bytes) in E:\test\PHPnow-1.5.6\vhosts\127.0.0.18\inc\PHPExcel\PHPExcel\Cell.php on line 840

本地调试的时候出现的,请问该怎么解决呢? phpexcel默认导出的编码是什么呢?数据库的编码是GBK的。
源代码有500多行(菜鸟PHPER)就不贴了。
针对第二个问题在网上找了下,加了这两句还是没用
set_time_limit(900);
//设置最大内存为128M
@ini_set('memory_limit','128M');

在这里先谢谢大家了
...全文
950 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
u011057841 2013-09-05
  • 打赏
  • 举报
回复
引用 14 楼 hu5487 的回复:
[quote=引用 13 楼 sibang 的回复:] 引用 11 楼 hu5487 的回复:引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置mem……
研究了半天问题终于解决了,是我的代码的问题,有几个格式用错了,比如 $objActSheet->mergeCells("'A'.$i.':L'.$i");错了导致根本过不去[/quote] 弱弱的问一句,正确的表示方法是?
www_7di_net 2013-01-16
  • 打赏
  • 举报
回复
引用 14 楼 hu5487 的回复:
引用 13 楼 sibang 的回复:引用 11 楼 hu5487 的回复:引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制……
恭喜,請結貼
wenfei307 2013-01-15
  • 打赏
  • 举报
回复
hu5487 2013-01-15
  • 打赏
  • 举报
回复
引用 13 楼 sibang 的回复:
引用 11 楼 hu5487 的回复:引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置mem……
研究了半天问题终于解决了,是我的代码的问题,有几个格式用错了,比如 $objActSheet->mergeCells("'A'.$i.':L'.$i");错了导致根本过不去
www_7di_net 2013-01-15
  • 打赏
  • 举报
回复
引用 11 楼 hu5487 的回复:
引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置memory_limit = 12M(推荐使……
把你的php代碼循環方式修改成url循环方式,示例: $i=(!isset($_GET['i'])) ? 0 : $_GET['i']; .... select * from 表 where id>{$i} order by id asc limit 0,1 .... Header('Location:?i='.$i);
hu5487 2013-01-13
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
phpExcel大数据量情况下内存溢出解决
使用了方法依然解决不了
hu5487 2013-01-12
  • 打赏
  • 举报
回复
引用 8 楼 sibang 的回复:
引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置memory_limit = 12M(推荐使用,如果拥有这个权限的话) ◦在s……
加到2G还是不行 有没有轻量级的呢? 我需要3个循环的 这才一个循环就这样了 到时候没那么给力的机器装。。。设置了缓存也不行。。。而且速度太慢了
www_7di_net 2013-01-12
  • 打赏
  • 举报
回复
引用 7 楼 hu5487 的回复:
引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置memory_limit = 12M(推荐使用,如果拥有这个权限的话) ◦在sites/default/setti……
還是不夠用,繼續加大
初初哥 2013-01-12
  • 打赏
  • 举报
回复
好像里面有一个设置编码的吧,我用的时候就是把编码设置成utf-8就可以了
hu5487 2013-01-11
  • 打赏
  • 举报
回复
引用 1 楼 sibang 的回复:
問題1: Mb_convert_encoding($html,'UTF8','BIG5'); //將big5轉為utf8 或iconv(gb2312,UTF-8,$要转的string); 問題2: 你的內存不足,需要修改PHP.ini中允許使用的內存量,改完重啟apache
你好,第一个问题解决了 但第二问题依然还在,我在测试的时候用了@ini_set('memory_limit', '-1');还是出现 Fatal error: Out of memory (allocated 1602748416) (tried to allocate 134217728 bytes) in E:\test\PHPnow-1.5.6\vhosts\127.0.0.18\inc\PHPExcel\PHPExcel\Cell.php on line 839 但是我本地的内存已经用满了,虾米那是我的代码
<?php
session_start();
include("inc/func.php");
$conn=mysql_connect('localhost','root','123456');
mysql_select_db('gzlgl',$conn);
mysql_query("set names UTF8");
//导入类库
require_once 'inc/PHPExcel/PHPExcel.php'; 
require_once 'inc/PHPExcel/PHPExcel/IOFactory.php';
//require_once '../inc/PHPExcel/PHPExcel/Reader/Excel5.php';
require_once 'inc/PHPExcel/PHPExcel/Writer/Excel2007.php';
//设置最大执行时间
set_time_limit(0);
//设置最大内存为128M
@ini_set('memory_limit', '-1');
 /*
初始化
*/
$arr_sem=array();
$sql="select * from semester";//读入学期周数
$record=mysql_query($sql,$conn) or die(mysql_error());
$row=mysql_fetch_row($record);
do{
 $arr_sem["$row[0]"]=$row[1];//arr_sem['学期']=学期周数
}while($row=mysql_fetch_row($record));
$arr_theory=array();//理论课工作量数组
//$arr_total_theory=array();//理论课工作量数组
$arr_lab=array();//实验课工作量数组
//$arr_total_lab=array();//实验课工作量数组
$arr_add=array();//附加工作量数组
//$arr_total_add=array();//附加工作量数组
$arr_total=array();//全部工作量数组
//导出为excel,考虑到兼容问题,导出为xls文件
// 创建一个处理对象实例
$objExcel = new PHPExcel();
// 创建文件格式写入对象实例
//$objWriter = new PHPExcel_Writer_Excel5($objExcel);
$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式
$objWriter->setOffice2003Compatibility(true);
//设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Tao Hu");
$objProps->setLastModifiedBy("ddd");
$objProps->setTitle(iconv('gbk', 'utf-8', '所选时间内的工作量详情'));
$objProps->setSubject("dd");
$objProps->setDescription("ss");
$objProps->setKeywords("s");
$objProps->setCategory("ss");
//设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('ddd');
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;  
$cacheSettings = array( ' memoryCacheSize '  => '8MB'  
                      );  
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); 
//合并单元格
$i=1;//行号
$j='A';//列号
	//合并单元格
	$objActSheet->mergeCells("'A'.$i.':L'.$i");
	$objActSheet->setCellValue("'A'.$i", '理论课工作量');
	$i++;
	//各项标题
	$objActSheet->setCellValue("'A'.$i", '工作量编号');
	$objActSheet->setCellValue("'B'.$i", '学期');
	$objActSheet->setCellValue("'C'.$i", '课程名称');
	$objActSheet->setCellValue("'D'.$i", '教师名称');
	$objActSheet->setCellValue("'E'.$i", 'K1');
	$objActSheet->setCellValue("'F'.$i", 'K2');
	$objActSheet->setCellValue("'G'.$i", 'K3');
	$objActSheet->setCellValue("'H'.$i", '学生数');
	$objActSheet->setCellValue("'I'.$i", 'we');
	$objActSheet->setCellValue("'J'.$i", 'we');
	$objActSheet->setCellValue("'K'.$i", 'fds');
	$objActSheet->setCellValue("'L'.$i", 'fwe');
	$i++;
		$objActSheet->setCellValue("'A'.$i", "dfd");
		$objActSheet->setCellValue("'B'.$i", "dfd");
	    $objActSheet->setCellValue("'C'.$i", "dfd");
		$objActSheet->setCellValue("'D'.$i", "dfd");
		$objActSheet->setCellValue("'E'.$i", "dfd");
		$objActSheet->setCellValue("'F'.$i", "dfd");
		$objActSheet->setCellValue("'G'.$i", "dfd");
		$objActSheet->setCellValue("'H'.$i", "dfd");
		$objActSheet->setCellValue("'I'.$i", "dfd");
		$objActSheet->setCellValue("'J'.$i", "dfd");
		$objActSheet->setCellValue("'K'.$i", $has_exam);
		$objActSheet->setCellValue("'L'.$i", $sum_thoery);
		$i++;
//输出内容
$outputFileName = "output.xls";
$objWriter->save($outputFileName); 
?>
hu5487 2013-01-11
  • 打赏
  • 举报
回复
引用 6 楼 wodecuoshi230 的回复:
引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置memory_limit = 12M(推荐使用,如果拥有这个权限的话) ◦在sites/default/settings.php文件里设置ini_set('memo……
都重启了 加上之后出现 589704 Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 35 bytes) in E:\test\PHPnow-1.5.6\vhosts\127.0.0.18\inc\PHPExcel\PHPExcel\Cell.php on line 839
www_7di_net 2013-01-11
  • 打赏
  • 举报
回复
問題1: Mb_convert_encoding($html,'UTF8','BIG5'); //將big5轉為utf8 或iconv(gb2312,UTF-8,$要转的string); 問題2: 你的內存不足,需要修改PHP.ini中允許使用的內存量,改完重啟apache
wodecuoshi230 2013-01-11
  • 打赏
  • 举报
回复
引用 4 楼 hu5487 的回复:
引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置memory_limit = 12M(推荐使用,如果拥有这个权限的话) ◦在sites/default/settings.php文件里设置ini_set('memory_limit','12M'); ……
更改php.ini内存限制之后,要重启apache
wodecuoshi230 2013-01-11
  • 打赏
  • 举报
回复
很正常,尝试输出页面占用内存情况,你就会懂得 echo memory_get_usage (); 在我本机,load一个5MB左右的excel文件,消耗了188 MB内容,而且页面用了二十秒。 http://bbs.csdn.net/topics/390312724
hu5487 2013-01-11
  • 打赏
  • 举报
回复
引用 3 楼 wodecuoshi230 的回复:
第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置memory_limit = 12M(推荐使用,如果拥有这个权限的话) ◦在sites/default/settings.php文件里设置ini_set('memory_limit','12M'); 解决办法二: // 设置缓存方式,减少对内存的……
已经设置为1024M了还是提示这个错误 而且使用的时候电脑内存占用超高,直接卡机
wodecuoshi230 2013-01-11
  • 打赏
  • 举报
回复
第二个问题: 内存超出 解决办法一: 可以通过以下两个方法修改php运行时的内存限制. 在php.ini文件里设置memory_limit = 12M(推荐使用,如果拥有这个权限的话) ◦在sites/default/settings.php文件里设置ini_set('memory_limit','12M'); 解决办法二: // 设置缓存方式,减少对内存的占用 $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp; $cacheSettings = array ( 'cacheTime' => 300 ); PHPExcel_Settings::setCacheStorageMethod ( $cacheMethod, $cacheSettings );
PHP+excel通用成绩查询系统是个极为简单却非常通用、非常方便的成绩查询系统,通用于几乎所有Excel单二维数据表查询。只需修改 查询条件和顶部、底部文字(非常简单),即可用于几乎所有工资等查询,成绩查询,物业查询,收电费查询,录取查询,证书查询等场景哦。 使用的是PHPexcel查询Excel,测试可用,可能速度偏慢(千条数据无影响) 直接查询Excel数据的第一个表,修改表格后FTP上传,快速搞定,非常方便。 当然LINUX可能xls文件可以倍下载,如果保密数据,请做防下载处理哦。 1.非常通用。无论你Excel/Wps二维表几列,列标题各是什么,直接支持。其他格式导出为csv或excel后同样支持。查询结果几乎都由你Excel二维表控制,平时只需维护好你的Excel表,而操作Excel,几乎每台电脑都有软件可以打开编辑,几乎谁都会操作。 2.使用简单。只需修改查询条件和标题,然后把你平时输入的excel二维表进行:复制,粘贴,更名,上传,特别方便,发布一次成绩查询,半分钟内可以解决。修改查询查询条件等,记事本打开编辑几个字即可,自定义是否使用验证码。 3.市场广泛。可以广泛用于一次性出来的改动很少的成绩查询,录取查询,证书查询系统(每个学校,教育机构,事业单位考试等都可以用到),工资查询系统(每个企业,学校,所有单位都可能用到),水电费查询系统等(小区,物业公司,大学寝室等),录取,证书查询系统。 4.使用灵活:支持多次查询,比如工资查询往往多月查询,那么你只需一个月放一个数据库,下拉的查询选项自动获取(选项即文件名);且每次查询除了设置的查询条件列的标题得一致外,其他的都是自定义可以不一样(任意列数,任意列标题,任意行数);如果查询条件不一致,将代码文件复制一份后用不同文件夹命名,然后修改查询条件即可使用。 20191128 更新日志: 时隔两年多更新下源码。 1. 使用2019版查询界面。 2. 说明书改进:使用201910月新排版界面;完善很多使用细节。 3. 程序改进:下拉按上传数据排序。 4. 程序改进:增强PHP7.0+支持,少部分xls文件未知原因还是不支持。 5. 说明书改进:增加源码建站指引说明书文件。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧