失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php如何将excel数据导入到数据库 【PHP】将Excel数据导入到MySQL数据库中

php如何将excel数据导入到数据库 【PHP】将Excel数据导入到MySQL数据库中

时间:2019-04-03 12:47:43

相关推荐

php如何将excel数据导入到数据库 【PHP】将Excel数据导入到MySQL数据库中

在一些项目中,经常会需要将Excel文件导入到Mysql或其他数据库中,我们这里使用PHPExcel来进行导入。

PHPExcel是一个使用PHP语言开发的Excel操作类,拥有读取、写入等强大功能。

我们可以读取服务器上的文件进行导入,也可以通过上传进行导入。

首先进行文件上传:

$file='/tmp/excel.xlsx';

move_uploaded_file($_FILES["file"]["tmp_name"],$file);

之后我们需要进行一些设置,防止导入大文件时超时等:

ini_set("memory_limit","-1");

set_time_limit(1800);

在PHPExcel中,可以设置缓存已节省内存开始,但会影响读取与写入单元格的速度(官方文档中有此说明)。如果你的内存勾搭,获取并不需要进行缓存设置,但对于小内存的服务器,这是很有必要的。PHPExcel有多种缓存机制,我们使用gzip压缩方式来使用:

$cacheMethod=PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;

if(!PHPExcel_Settings::setCacheStorageMethod($cacheMethod)){

die($cacheMethod."cachingmethodisnotavailable".EOL);

}

官方文档中介绍,在脚本执行完成之前,已初始化过的缓存设置将不能被更改,会一直使用到脚本执行结束。

设置好缓存之后,我们就可以对Excel文件进行读取了:

$reader=PHPExcel_IOFactory::createReader('Excel');

$reader->setReadDataOnly(true);

我们读取的是Excel格式的文件,PHPExcel支持多种文件格式,如果需要查看对应格式的使用方式可以去查看官方文档。

设置 setReadDataOnly 有助于提高读取性能。

加载文件,之后获取当前的sheet进行操作:

$excel=$reader->load($file);

$sheet=$excel->getActiveSheet();

你可以通过读取单元格的方式来进行操作,也可以通过数组的方式进行操作。

数组方式:

$sheet->toArray(null,true,true,true);

单元格方式:

$sheet->getCell('A6')->getFormattedValue();

可以读取单元格数据之后,我们就可以将数据写入数据库了。

但这样远没有结束,如果你的Excel文件过大的话,load操作的时间会特别特别长(超强服务器请忽略此句),所以我们需要对数据进行分块处理。

我们可以通过Filter来进行分块操作,我们这里定义一个ReadFilter的过滤类:

classReadFilterimplementsPHPExcel_Reader_IReadFilter

{

private$_startRow=0;

private$_endRow=0;

publicfunctionsetRows($startRow,$chunkSize)

{

$this->_startRow=$startRow;

$this->_endRow=$startRow+$chunkSize;

}

publicfunctionreadCell($column,$row,$worksheetName='')

{

if($row>=$this->_startRow&&$row_endRow){

returntrue;

}

returnfalse;

}

}

我们读取的时候通过setRows来规定要读取的起始行和结束行,在readCell中对数据进行过滤,return false则为忽略此条数据。

我们通过URL参数来规定此页面需要读取哪些数据,读取完之后刷新,进行下一批操作,这个功能可以自行尝试。

我们对Excel的操作基本就可以完成了,其实这应该是一个很简单的功能,因为在我的本地服务器上只写了一遍代码就通过了,但传到在线服务器后,发现在线服务器有各种各样的限制,而我又不能修改这些限制,于是尝试了多种读取及数据库写入方式,今天面对的最多的一句话就是Mysql has gone away,当我无比心酸,但最后筛查后发现是框架里的数据库操作类有问题。 =_=

这篇博客就到这里了。

如果觉得《php如何将excel数据导入到数据库 【PHP】将Excel数据导入到MySQL数据库中》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。