phpexcel 读取数据
最近公司做一个客户导入会员的功能,以前导入都是使用csv格式导入的,但是客户反应问题挺多的,普遍是乱码(由于各种系统各种环境可能引起编码问题)。最近想着就把这个导入完全改成excel导入,就研究了下phpexcel,发现读取excel还是挺方便的,这样也方便客户了,比较excel 无论用office 还是 wps 打开都是没有问题的
示例读取代码如下
/*
* $path excel文件路径
* $header_mapping 文字和数据库字段的对应关系
* excel第一行 是 字段标准(通常是汉字),
* example
* $header_mapping = [ '姓名' => 'uid' ];
*
*/
private function readExcel( $path,$header_mapping = []){
$objPHPExcel = PHPExcel_IOFactory::load( $path );
//选择标签页 $sheet = $objPHPExcel->getSheet(0); //获取行数与列数,注意列数需要转换
$highestRowNum = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$highestColumnNum = PHPExcel_Cell::columnIndexFromString($highestColumn);
$usefullColumnNum = $highestColumnNum; //取得字段,这里测试表格中的第一行为数据的字段,因此先取出用来作后面数组的键名
$filed = array();
for($i=0; $i<$highestColumnNum;$i++){
$cellName = PHPExcel_Cell::stringFromColumnIndex($i).'1';
$cellVal = $sheet->getCell($cellName)->getValue();//取得列内容
if( !$cellVal ){
break;
}
$usefullColumnNum = $i;
$filed []= $cellVal;
} //开始取出数据并存入数组
$data = [];
for( $i=2; $i <= $highestRowNum ;$i++ ){//ignore row 1
$row = array();
for( $j = 0; $j <= $usefullColumnNum;$j++ ){
if( !isset($header_mapping[ $filed[$j] ]) ){
continue;
}
$cellName = PHPExcel_Cell::stringFromColumnIndex($j).$i;
$cellVal = $sheet->getCell($cellName)->getValue();
if($cellVal instanceof PHPExcel_RichText){ //富文本转换字符串
$cellVal = $cellVal->__toString();
} $fd = $header_mapping[ $filed[$j] ];
$row[ $fd ] = $cellVal;
}
$data []= $row;
}
return $data;
} /*
* excel日期转化
* excel中日期读取出来是个数字,需要转化
**/
private function excelTime( $date ){
$date = date("Y-m-d",PHPExcel_Shared_Date::ExcelToPHP($date) );
return $date;
}
演示界面截图



phpexcel地址
https://github.com/PHPOffice/PHPExcel
注意事项
1:日期格式处理 ,处理如下
//phpexcel 读取日期格式出来是个数字
$date = date("Y-m-d",PHPExcel_Shared_Date::ExcelToPHP($date) );
2:长整形处理
//php读取excel长整形会以科学计数法记录
number_format( $val,0,'','');
原文地址:phpexcel 读取数据
标签:phpexcel   read   读取
智能推荐
- php Only variables can be passed by reference
 - php 请求参数限制
 - 深入了解php opcode缓存原理
 - phpexcel 内存溢出 优化
 - 完美解决failed to open stream: HTTP request failed!(file_get_contents引起的)
 
phpexcel 读取数据的更多相关文章
- 利用PHPExcel读取Excel的数据和导出数据到Excel
		
PHPExcel是一个PHP类库,用来帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel.也是我们日常开发中,经常会遇到的使用场景.比如有个客户信息表,要批量导出发给同事,我 ...
 - 关于PHPExcel上传Excel单元格富文本和时间类型读取数据问题
		
当用PHPExcel做Excel上传文件读取数据时,print_r出来的数据,竟然发现其中有几个单元格返回的是PHPExcel富文本对象,而且时间类型的单元格返回的是一个不是时间戳的五位数.就像下图那 ...
 - php phpexcel  读取excel文件数据
		
public function readExcel(){ $allPath = '/home/examine\video/list.xls'; \think\Loader::import('exten ...
 - PHPExcel读取excel文件示例
		
PHPExcel读取excel文件示例PHPExcel最新版官方下载网址:http://phpexcel.codeplex.com/PHPExcel是一个非常方便生成Excel格式文件的类,官方下载包 ...
 - ThinkPHP第二十三天(Category表结构、PHPExcel导入数据函数)
		
1.category分类表表结构id,name,pid,sort,结合category.class.php类使用. 2.PHPExcel导入数据函数示例 function excel_to_mysql ...
 - 使用PHPExcel实现数据批量导入到数据库
		
此例子只使用execel2003的.xls文档,若使用的是其他版本,可以保存格式为“Execel 97-2003 工作簿(*.xls)”即.xls文件类型即可! 功能说明:只能上传Excel2003类 ...
 - PHPExcel读取表格内容
		
PHPExcel读取表格 先引入类IOFactory.php require_once '../PHPExcel/IOFactory.php'; $filePath = "test.xlsx ...
 - struts2中从后台读取数据到<s:select>
		
看到网上好多有struts2中从后台读取数据到<s:select>的,但都 不太详细,可能是我自己理解不了吧!所以我自己做了 一个,其中可能 有很多不好的地方,望广大网友指出 结果如图 p ...
 - [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据
		
继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF ...
 
随机推荐
- HDU 4343 贪心
			
D - Interval queryTime Limit: 1.5 Sec Memory Limit: 256 MB Description This is a very simple questio ...
 - msconfig设置调试开启 关闭 操作注册表项是
			
经过测试 9dea862c-5cdd-4e70-acc1-f32b644d4795 这个项每个系统都是固定的.这个项里面的 Elements 里面项也是固定的.在 24000001 项里的 E ...
 - js:数据结构笔记8--集合
			
集合:唯一性,无序性: 基本结构: function Set () { this.dataStore = []; this.add = add; this.remove = remove; this. ...
 - http://jingyan.baidu.com/article/bad08e1ee14ae409c85121cf.html
			
http://jingyan.baidu.com/article/bad08e1ee14ae409c85121cf.html
 - DFS/BFS Codeforces Round #301 (Div. 2) C. Ice Cave
			
题目传送门 /* 题意:告诉起点终点,踩一次, '.'变成'X',再踩一次,冰块破碎,问是否能使终点冰破碎 DFS:如题解所说,分三种情况:1. 如果两点重合,只要往外走一步再走回来就行了:2. 若两 ...
 - BFS POJ 3278 Catch That Cow
			
题目传送门 /* BFS简单题:考虑x-1,x+1,x*2三种情况,bfs队列练练手 */ #include <cstdio> #include <iostream> #inc ...
 - HDU 4612 Warm up(Tarjan)
			
果断对Tarjan不熟啊,Tarjan后缩点,求树上的最长路,注意重边的处理,借鉴宝哥的做法,开标记数组,标记自己的反向边. #pragma comment(linker, "/STACK: ...
 - 使用mybatis执行oracle存储过程
			
存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验. 1.无输入和输出参数的 ...
 - UIView+LHQExtension(分类)
			
// // UIView+LHQExtension.h // 微博 - 李洪强(2016-5-27) // // Created by vic fan on 16/5/30. // Copyr ...
 - 9.0 alpha 版安装出现 could not execute command lessc 的问题
			
解决方案: apt-get install node-less