PHPExcel所遇到问题的知识点总结
工作中进行excel的时候遇到了两个问题,
1.excel表中列值过大,由于没有进行特殊处理,程序没法正常运行;
2.列值中含有日期格式的文本,不能正确读取;
所以通过网络搜索,并解决了问题,记录一下,以备后用:
解决方法:
/****知识点总结*****
1.列数值过大,可以通过 PHPExcel_Cell::columnIndexFromString($column),获取最大列的数值
2.针对表格中有日期的,可以通过PHPExcel_Shared_Date::ExcelToPHP($value) 进行格式化,
如获取一个日期值,可如下面语句进行获取:
$date = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
*******************/
<?php
//PHPExcel类获取地址 https://github.com/PHPOffice/PHPExcel
//引入PHPExcel类文件
include_once './PHPExcel.php';
//读取的excel文件
$excelFile = './test.xlsx'; /**实例化读取excel文件类,根据excel版本进行不同获取,下面是不同方式*/
/***
//Excel5方式
$objReader = new PHPExcel_Reader_Excel5();
$objReader = PHPExcel_IOFactory::createWriter('Excel5'); //Excel2007方式
$objReader = new PHPExcel_Reader_Excel2007();
$objReader = PHPExcel_IOFactory::createWriter('Excel2007');
***/ //由于我的文件是07版本,所以使用Excel2007方式
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); //载入excel文件
$objPHPExcel = $objReader->load($excelFile); //读取excel的第一个工作表
$sheet = $objPHPExcel->getSheet(0); //取得总行数
$highestRow = $sheet->getHighestRow(); //取得总列数
$highestColumm = $sheet->getHighestColumn(); //获取最大列值字母对应的数值
$highestColummNum = PHPExcel_Cell::columnIndexFromString($highestColumm); if (!$highestRow || !$highestColumm) {
exit('表中无数据');
} //获取表格值进行存储
$dataExcel = array(); $i = 0;
//如果列值过大,进行计算,
if ($highestColummNum > 26) {
//循环读取每个单元格的数据
for ($row = 2; $row <= $highestRow; $row++) {//行数是以第2行开始
for ($column = 'A'; PHPExcel_Cell::columnIndexFromString($column) <= $highestColummNum; $column++) {//列数是以A列开始
if ($column == 'E') {//假设第E列是日期
$dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
} else {
$dataExcel[$i][] = $sheet->getCell($column.$row)->getValue();
}
}
$i++;
}
} else {
//循环读取每个单元格的数据
for ($row = 2; $row <= $highestRow; $row++) {//行数是以第2行开始
for ($column = 'A';$column <= $highestColumm; $column++) {//列数是以A列开始
if ($column == 'E') {//假设第E列是日期
$dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
} else {
$dataExcel[$i][] = $sheet->getCell($column.$row)->getValue();
}
}
$i++;
}
} if (!$dataExcel) {
exit('未获取任何数据');
} print_r($dataExcel);
exit; /****知识点总结*****
1.列数值过大,可以通过 PHPExcel_Cell::columnIndexFromString($column),获取最大列的数值 2.针对表格中有日期的,可以通过PHPExcel_Shared_Date::ExcelToPHP($value) 进行格式化,
如获取一个日期值,可如下面语句进行获取:
$date = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue())); *******************/
?>
PHPExcel所遇到问题的知识点总结的更多相关文章
- (实用篇)PHPExcel读取Excel文件的实现代码
用PHPExcel读取Excel 2007 或者Excel2003文件,需要的朋友,可以参考下. 涉及知识点: php对excel文件进行循环读取 php对字符进行ascii编码转化,将字符转为十进 ...
- ThinkPHP导入Excel文件(使用PHPExcel)
一. 主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据.下载地址:http://phpexcel.codeplex.com/ O.开发 ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- UWP开发必备以及常用知识点总结
一直在学UWP,一直在写Code,自己到达了什么水平?还有多少东西需要学习才能独挡一面?我想对刚接触UWP的开发者都有这种困惑,偶尔停下来总结分析一下还是很有收获的! 以下内容是自己开发中经常遇到的一 ...
- phpexcel读取输出操作
//读取 <?php header("Content-Type:text/html;charset=utf-8"); include 'Classes/PHPExcel.ph ...
- C#高级知识点&(ABP框架理论学习高级篇)——白金版
前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...
- lucene 基础知识点
部分知识点的梳理,参考<lucene实战>及网络资料 1.基本概念 lucence 可以认为分为两大组件: 1)索引组件 a.内容获取:即将原始的内容材料,可以是数据库.网站(爬虫).文本 ...
- DoraCMS 源码知识点备注
项目需要研究了下DoraCMS这款开源CMS,真心做的不错:).用的框架是常用的express 4 + mongoose,代码也很规范,值得学习. 源码中一些涉及到的小知识点备注下: https:// ...
随机推荐
- js写滚动的文字
页面中的文字,逐个显示在页面:由于电脑的配置较低,录制的视频相对来说比较卡顿 思路: 用一个定时器将预制的文字通过字符串截取.substring(0, i)方法不断的赋给要显示的区域,i在定时器里面迭 ...
- centos7下安装配置redis
1.1. Redis下载安装(linux) 1.1.1. 下载: 下载地址:https://redis.io/download 选择合适的版本下载,如下图: 1.1.2. 安装: (1)把下载好的re ...
- pytorch0.4版的CNN对minist分类
卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功 ...
- Python序列函数、高级特性及高阶函数
序列函数: enumerate: for循环时记录索引,逐个返回元组(i, item) sorted:返回新的有序列表 zip:压缩将多个序列的对应位置的元素组成元组 zip(*元组列表): 解压缩 ...
- 【组合数】[NOIP2011]选择客栈[c++]
题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ...
- hbase.client.keyvalue.maxsize的默认值
hbase的列族的最大值是在hbase配置里的hbase.client.keyvalue.maxsize,默认大小为10M,即 10485760 . http://eclecl1314-163-com ...
- linux 系统下使用socket进行本地进程间通信
转自:https://blog.csdn.net/baidu_24553027/article/details/54912724 使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不 ...
- 找回Android studio的帮助文档
对于业余写点小程序,自娱自乐的我来说,写程序过程的帮助文档非常重要,毕竟不是专业人士.用Visual Studio时,习惯于光标一移到一个类或对象上面,马上出现相应的帮助文档(如图) studio的帮 ...
- 大疆无人机M100相关问题解决过程
1.遥控器升级问题 iOS端使用app升级,重复尝试了5次+,还是无法升级.卸载app重新安装,依旧是无法升级.使用Android app升级,一次搞定. 2.飞行器固件升级(云台别选错了) http ...
- 每天一个linux命令:df
1.命令简介 df (disk free) 其功能显示每个文件所在的文件系统的信息,默认是显示所有文件系统. 2.用法 df [选项]... [文件]... 3.选项 4.示例 示例1:显示磁盘使 ...