PHPExcel 导入Excel数据 (导出下一篇我们继续讲解)
一:使用composer下载 phpoffice/phpexcel 或者直接下载安装包
composer require phpoffice/phpexcel
二
1:导入数据
原理:读取文件,获取文件的最大行,最大列。然后组装数据,导入数据库。
注意:如果你的Excel文件是加密的话是读取不了的,我真的在这上面浪费了很多时间,如果有谁知道如何解决,麻烦告知一二谢谢。
我们来看看如何具体实现

实现方法
public static function importExcel($file = '', $sheet = 0)
{
$file = iconv("utf-8", "gb2312", $file); //转码
if (empty($file) OR !file_exists($file)) {
die('file not exists!');
} $objRead = new PHPExcel_Reader_Excel2007(); //建立reader对象
if (!$objRead->canRead($file)) {
$objRead = new PHPExcel_Reader_Excel5();
if (!$objRead->canRead($file)) {
die('No Excel!');
}
} $cellName = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI',
'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ']; $obj = $objRead->load($file); //建立excel对象
$currSheet = $obj->getSheet($sheet); //获取指定的sheet表
$columnH = $currSheet->getHighestColumn(); //取得最大的列号
$columnCnt = array_search($columnH, $cellName);
$rowCnt = $currSheet->getHighestRow(); //获取总行数 $data = [];
for ($_row = 1; $_row <= $rowCnt; $_row++) { //读取内容
for ($_column = 0; $_column <= $columnCnt; $_column++) {
$cellId = $cellName[$_column] . $_row;
$cellValue = $currSheet->getCell($cellId)->getValue();
$data[$_row][$_column] = $cellValue;
}
} $return_data = [];
foreach ($data as $k => $v) {
if ($k > 1) {
$test = array_combine($data[1], $data[$k]);
array_push($return_data, $test);
}
}
return $return_data;
}
//精简版
<?php
/**
* Created by PhpStorm.
* User: Json
* Date: 2019/3/13 0013
* Time: 15:25
*/
namespace app\models; use PHPExcel_Reader_Excel2007;
use PHPExcel_Reader_Excel5; class importExcel
{
public static function importExcel($file = '', $sheet = 0)
{
$file = iconv("utf-8", "gb2312", $file); //转码
if (empty($file) OR !file_exists($file)) {
die('file not exists!');
} $objRead = new PHPExcel_Reader_Excel2007(); //建立reader对象
if (!$objRead->canRead($file)) {
$objRead = new PHPExcel_Reader_Excel5();
if (!$objRead->canRead($file)) {
die('No Excel!');
}
} $obj = $objRead->load($file); //建立excel对象
$data = $obj->getSheet($sheet)->toArray();//获取为数组 $return_data = [];
foreach ($data as $k => $v) {
if ($k > 0) {
$test = array_combine($data[0], $data[$k]);
array_push($return_data, $test);
}
}
return $return_data;
}
}
步骤1:页面:
<html>
<body>
<form action="<?= \yii\helpers\Url::to(['site/import']) ?>" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file"/>
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>
步骤2:PHP调用
public function actionImport()
{
$file = $_FILES['file']; $data = importExcel::importExcel($file['tmp_name']);
var_dump($data);
}

注意如果文件过大,PHP读取会过长,我们可以设置。
set_time_limit(0);//0代表永久
PHPExcel 导入Excel数据 (导出下一篇我们继续讲解)的更多相关文章
- thinkphp整合系列之phpexcel导入excel数据
一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:导入excel的函数 /** * 导入excel文件 * @param string $file ex ...
- thinkphp5使用PHPExcel导入Excel数据
安装PHPExcel扩展类 地址:https://github.com/PHPOffice/PHPExcel ①通过composer安装 ②手动下载, 放在项目的extend目录下 代码中引入 由于P ...
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...
- 使用phpExcel实现Excel数据的导入导出(完全步骤)
使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人 ...
- 利用PHPExcel 实现excel数据的导入导出(源码实现)
利用PHPExcel 实现excel数据的导入导出(源码实现) 在开发过程中,经常会遇到导入导出的需求,利用phpexcel类实现起来也是比较容易的,下面,我们一步一步实现 提前将phpexcel类下 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- C#变成数据导入Excel和导出Excel
excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就 ...
- PHPExcel将Excel数据导入数据库
<?php //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据 ...
- Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel
Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel 在博文"在Asp.Net Core 使用 Sqlite 数据库"中创建了ASP.NET Co ...
随机推荐
- BASE64编码的字符进行URL传输丢失特殊字符的问题
因为BASE64的编码里含有“+”号等特殊字符,在url传输的时候会把+号编程空格,解决这个问题的方法: 请求时把BASE64编码进行url的编码再进行传输 接收时把BASE64编码进行url的解码 ...
- less @import and extend及mixin详解
在less中,通过 @import (keyword) "filename"的方式引入其他的文件,这个keyword可以是以下6种: referrence referrence这个 ...
- Java程序中解决数据库超时与死锁
Java程序中解决数据库超时与死锁 2011-06-07 11:09 佚名 帮考网 字号:T | T Java程序中解决数据库超时与死锁,每个使用关系型数据库的程序都可能遇到数据死锁或不可用的情况 ...
- Angular2 备忘
ng serve --port 80 --disable-host-check 启动80端口,禁用host检查 要在 component 内绑定全局事件的话,可以使用 @HostListener, ...
- linux下查看某个文件属于哪个包
1.centos/redhat下查看某个文件或命令属于哪个rpm包: $ yum provides /etc/passwd 或者 $ rpm -qf /etc/passwd 2.ubuntu及衍生版: ...
- shell 脚本中后台执行命令 &
最近遇到一个问题, 执行脚本,脚本调用 一个命令,命令(deamon)是一个守护进程,为了调试,取消了守护进程模式.导致命令后边的其他命令(echo "456")都无法执行. de ...
- 上传附件(图片base64)封装方法
上传附件(图片base64)封装方法 php 上传附件,base64 项目中封装的接口: public function error($msg){ header("Content-type: ...
- 云来储存型XSS漏洞+越权修改应用封面
0x001. 今天本来想看看场景应用有什么新功能没,于是乎随便打开了一个场景应用,然后上传了一张图片修改下封面,结果我看到firefox 网络竟然有2个post,不由得勾起我的好奇心,好奇害死猫嘿嘿. ...
- 深入理解PHP传参原理(PHP5.2)
首先说下今天想到的一个问题.在编写php扩展的时候,似乎参数(即传给zend_parse_parameters的变量)是不需要free的.举例: PHP_FUNCTION(test) { char* ...
- copy "xxxxx\xx.dll xxxxxxx\ ” 已退出,代码为1 错误解决方法
右键=>属性=>生成事件里面,查看预先生成事件命令行和后期生成事件命令行,查看复制的Dll是否存在已经路径是否正确