在一些项目中,经常会需要将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 . " caching method is not available" . EOL);

}

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

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

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

$reader->setReadDataOnly(true);

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

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

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

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

$sheet = $excel->getActiveSheet();

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

数组方式:

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

单元格方式:

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

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

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

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

class ReadFilter implements PHPExcel_Reader_IReadFilter

{

private $_startRow = 0;

private $_endRow = 0;

public function setRows($startRow, $chunkSize)

{

$this->_startRow = $startRow;

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

}

public function readCell($column, $row, $worksheetName = '')

{

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

return true;

}

return false;

}

}

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

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

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

这篇博客就到这里了。

php如何将excel数据导入到数据库,【PHP】将Excel数据导入到MySQL数据库中相关推荐

  1. mysql数据库latin1转utf8_三种转换Mysql数据库数据编码的窍门-latin1转utf8

    背景:某个操作系统的Mysql数据库数据库Databnsednname采用默认的latin1字符集,操作系统升级需求将所有数据转换成utf-8各式,目的数据库Databnse为newdbname(建库 ...

  2. 【数据库取证篇】阿里云RDS MySQL数据库在线取证教程

    [数据库取证篇]阿里云RDS MySQL数据库在线取证教程 在线取证或备份数据-[蘇小沐] 文章目录 [数据库取证篇]阿里云RDS MySQL数据库在线取证教程 1.实验环境 一.RDS登录方式 (一 ...

  3. php mysql主从延迟_如何解决主从数据库同步延迟问题?php连接 mysql 数据库如何添加一个公共的配置文件50...

    在上一篇文章中,小编为您详细介绍了关于<图上属标注的什么样元器件?火车购票明明显示无座为什么样乘车后却发现有很多空座>相关知识.本篇中小编将再为您讲解标题如何解决主从数据库同步延迟问题?p ...

  4. Qt数据库练习之QSqlTableModel的使用(MySql数据库示例,含源码+注释)

    文章目录 一.操作示例 1.1 修改记录(数据) 1.2 添加记录(数据) 1.3 删除记录(数据) 1.4 取消操作 1.5 排序操作 1.6 查询操作 二.了解QSqlTableModel 三.源 ...

  5. navicat无法连接远程mysql数据库_[数据库]Navicat Premium 解决无法连接远程mysql数据库问题...

    [数据库]Navicat Premium 解决无法连接远程mysql数据库问题 0 2018-07-18 00:00:15 问题原因 :  第一点 远程服务器数据库没有授权 第二点 远程连接数据库的端 ...

  6. solr mysql 导入命令_(solr系列:四)将mysql数据库中的数据导入到solr中及删除solr中导入的数据...

    在前面的博文中,已完成了在tomcat中对solr的部署,为solr添加了一个自定义的core,并且引入了ik分词器. 那么该如何将本地的mysql的数据导入到solr中呢? 准备工作: 1.mysq ...

  7. linux将mysql导出表数据导入另一台服务器_远程linux服务器mysql数据库导入和导出.sql文件...

    今天对需要将服务器上的数据库放到本地环境,之前没怎么这么操作过,ORZ,弱鸡,这篇帖子不错,收藏了!!! 远程linux服务器mysql数据库导入和导出.sql文件 大部分情况本地开发环境为windo ...

  8. 往远程mysql传数据库_三、Navicat将远程MySql数据库数据导入本地

    1.安装本地的MySql.记住用户名和密码,这里以root,root为例. 2.打开Navicat,新建连接(连接),输入连接名,用户名,密码.确定,连接测试.这里连接名为luzhanshi.这样本地 ...

  9. python亿级mysql数据库导出_Python之csv文件从MySQL数据库导入导出的方法

    Python之csv文件从MySQL数据库导入导出的方法 发布时间:2020-10-26 07:39:02 来源:脚本之家 阅读:53 作者:张行之 Python从MySQL数据库中导出csv文件处理 ...

  10. mysql 轨迹数据存储_python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库...

    小帅b说过 在这几篇中会着重说说将爬取下来的数据进行存储 上次我们说了一种 csv 的存储方式 这次主要来说说怎么将爬取下来的数据保存到 MySQL 数据库 接下来就是 学习python的正确姿势 真 ...

最新文章

  1. 如何让引擎蜘蛛天天光临你的网站
  2. Android JNI入门第六篇——基本数据类型使用
  3. 【阿佳说】打造抖音个人IP实现利润翻倍
  4. JAVA程序猿面试题汇总
  5. 漫画:给女朋友解释为什么随机播放歌曲并不随机
  6. android 二进制编辑器,二进制编辑器 (c + +)
  7. 2020年中国洪涝受灾人口数、死亡失踪人口数、倒塌房屋数量及造成的直接经济损失分析[图]
  8. 【ubuntu如何录制gif图】
  9. Downward paths
  10. 实战:解密拼多多玩法—砍价
  11. 智慧城市是什么,建设智慧城市需要哪些核心技术?
  12. 模拟人生4 春夏秋冬、星梦起飞版更新下载方法以及常见问题
  13. React Native开发之——Webstorm开发RN配置
  14. 明星项目ALGO沦为散户收割机:5天跌去60%,私募却获48倍回报
  15. 1493_人月神话阅读笔记_未雨绸缪
  16. mysql大批量插入数据的正确做法
  17. 盛元广通高校开放式实验教学管理系统
  18. Go实战--golang中OAuth2.0的使用(使用google账号进行登陆验证)
  19. Software Paradigms
  20. 网络流24题 05圆桌聚餐

热门文章

  1. 笔记本电脑上insert scrlk 键和 insert键(插入和改写格式转换)
  2. IDEA Error occurred during initialization of VM
  3. 038-拯救大兵瑞恩之 TiDB 如何在 TiKV 损坏的情况下恢复
  4. VB SendMessage 函数
  5. APP开发究竟需要多少钱?
  6. 17 款程序员神级 Chrome 插件,爱了爱了!
  7. HTML CSS JS 网页设计作业「我的家乡」-广东
  8. 将国际标准时间和时间戳转换成年月日时分秒
  9. SubmitButton
  10. 【操作系统-Windows】杀毒软件工作原理 及 现在主要杀毒技术