phpExcel导出大量数据出现内存溢出错误解决办法
phpExcel将读取的单元格信息保存在内存中,我们可以通过
代码如下 | 复制代码 |
PHPExcel_Settings::setCacheStorageMethod() |
来设置不同的缓存方式,已达到降低内存消耗的目的!
1、将单元格数据序列化后保存在内存中
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized; |
2、将单元格序列化后再进行Gzip压缩,然后保存在内存中
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip; |
3、缓存在临时的磁盘文件中,速度可能会慢一些
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_to_discISAM; |
4、保存在php://temp
代码如下 | 复制代码 |
PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp; |
5、保存在memcache中
PHPExcel_CachedObjectStorageFactory::cache_to_memcache
举例:
第4中方式:
代码如下 | 复制代码 |
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; |
第5种:
代码如下 | 复制代码 |
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache; |
其它的方法
第一个方法,你可以考虑生成多个sheet的方式,不需要生成多个excel文件,根据你数据总量计算每个sheet导出多少行, 下面是PHPExcel生成多个sheet方法:
面是PHPExcel生成多个sheet方法:
代码如下 | 复制代码 |
$sheet = $objPHPExcel->getActiveSheet(); $sheet->setCellValue('A1',$x); $sheet->setCellValue('B1',$y); |
第二个方法,你可以考虑ajax来分批导出,不用每次刷新页面。
代码如下 | 复制代码 |
<a href="#" id="export">export to Excel</a> $('#export').click(function() { $.ajax({ url: "export.php", data: getData(), //这个地方你也可以在php里获取,一般读数据库 success: function(response){ window.location.href = response.url; } })
}); |
代码如下 | 复制代码 |
//export.php $data = $_POST['data']; $xls = new PHPExcel(); $xls->loadData($formattedData); $xls->exportToFile('excel.xls'); $response = array( 'success' => true, 'url' => $url );
echo json_encode($response); ?> |
数据量很大的话,建议采用第二种方法,ajax来导出数据,上面方法简单给了个流程,具体你自己补充!
PHPExcel是一款php对于excel数据表读写的一个非常棒的插件了,下面我来给大家介绍利用PHPExcel读取excel并导入mysql数据库方法。例1
代码示例
代码如下 | 复制代码 |
require_once 'phpexcel/Classes/PHPExcel.php'; //循环读取excel文件,读取一条,插入一条 $a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//获取A列的值 } |
例2
代码如下 | 复制代码 |
<?php |
例3
新建数据库表如下:
代码如下 | 复制代码 |
-- 数据库: `alumni` -- 表的结构 `alumni` CREATE TABLE IF NOT EXISTS `alumni` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `gid` varchar(20) DEFAULT NULL COMMENT '档案编号', `student_no` varchar(20) DEFAULT NULL COMMENT '学号', `name` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`), KEY `gid` (`gid`), KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
php程序
代码如下 | 复制代码 |
|
下面是odbc建立连接代码。
代码如下 | 复制代码 |
$con = odbc_connect('odbc名称','用户名','密码'); |
2、连接mssql2000
代码如下 | 复制代码 |
$con = mssql_connect('数据库地址','用户名','密码'); |
3、连接mssql2008
代码如下 | 复制代码 |
$connectionInfo = array("UID"=>用户名,"PWD"=>密码,"Database"=>"数据库名称"); |
上面方法很简单我就不介绍了,只讲述如果连接不成功我们可做如下设置(php.ini文件
中;extension=php_pdo_mssql.dll ;extension=php_pdo_odbc.dll 前面的分号去掉)
使用php程序的朋友都知道php与mysql非常不错的一对了,我们常常用它来做WEB开发,下面我来介绍最简单的php连接mysql数据库并写入数据,有需要的朋友可参考。原理步骤
1,php利用mysql_connect与mysql数据库连接
2,打开MySQL数据库
3,接受页面数据,PHP录入到指定的表中
4、然后利用mysql_query把sql执行并保存到数据库中。
连接mysql数据库超级简单如下
代码如下 | 复制代码 |
<?php mysql_connect("localhost","root","");//连接MySQL mysql_select_db("hello");//选择数据库 ?> |
例1
代码如下 | 复制代码 |
<?php $uname = $_GET['n'];//GET方法为URL参数传递 $sql = "insert into members(username,password) values ('$uname','$psw')"; mysql_close();//关闭MySQL连接 |
结合了更简单的
代码如下 | 复制代码 |
<? |
代码如下 | 复制代码 |
<?php */ |
相关文章
PHP session_start()很慢问题分析与解决办法
本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25php中json_decode()和json_encode()用法与中文不显示解决办法
本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25- 在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
- 401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
- Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
- 今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
- 下面给大家介绍phpstudy访问速度慢的解决办法。1、修改mysql数据库链接地址为ip地址127.0.0.1。2、使用最新版本,这个坑了我好久时间。下面一段内容是关于phpstudy启动失败的解决办法。php5.3、5.4和apache都是用vc9编...2015-11-24
- 自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31
- 分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21
android.os.BinderProxy cannot be cast to com解决办法
本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20- 1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21- 对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
- 这篇文章主要介绍了Mybatis plus中使用in查询出错的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-06
- 下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
Ubuntu15下mysql5.6.25不支持中文的解决办法
apt-get install 安装的,不是源码包安装的mysql1 修改mysql的配置文件/etc/mysql/conf.d/mysql.cnf在[mysql]的下方加入如下语句:(注:这个文件下没有配置,只有【mysql】)no-auto-rehash default-character-set=utf8/etc/...2015-10-21- 本文章来给大家介绍php mail发邮件标题中文乱码的问题解决办法,希望到此类问题的朋友可进入参考。 当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码...2016-11-25
- FlashFXP是一款常用的服务器客户连接软件了,我们可以通过FlashFXP来上传或下载文件,但有一些朋友使用FlashFXP时碰到中文目录或文件名乱码问题,那么要如何来解决呢?具体就...2016-10-10
- 刚升级一会就出现 Multiple primary key definedalter table ***_ecms_infoclass_shop change classid classid int(10) unsigned NOT NULL default '0', DROP INDEX clas...2013-05-20
Fatal error: Cannot redeclare class 原因分析与解决办法
我使用的都是php __autoload状态自动加载类的,今天好好的程序不知道怎么在运行时提示Fatal error: Cannot redeclare class 了,看是重复定义了类,下面我来分析一下解决办...2016-11-25