工作中进行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()));

*******************/

  1. <?php
  2. //PHPExcel类获取地址 https://github.com/PHPOffice/PHPExcel
  3. //引入PHPExcel类文件
  4. include_once './PHPExcel.php';
  5. //读取的excel文件
  6. $excelFile = './test.xlsx';
  7.  
  8. /**实例化读取excel文件类,根据excel版本进行不同获取,下面是不同方式*/
  9. /***
  10. //Excel5方式
  11. $objReader = new PHPExcel_Reader_Excel5();
  12. $objReader = PHPExcel_IOFactory::createWriter('Excel5');
  13.  
  14. //Excel2007方式
  15. $objReader = new PHPExcel_Reader_Excel2007();
  16. $objReader = PHPExcel_IOFactory::createWriter('Excel2007');
  17. ***/
  18.  
  19. //由于我的文件是07版本,所以使用Excel2007方式
  20. $objReader = PHPExcel_IOFactory::createReader('Excel2007');
  21.  
  22. //载入excel文件
  23. $objPHPExcel = $objReader->load($excelFile);
  24.  
  25. //读取excel的第一个工作表
  26. $sheet = $objPHPExcel->getSheet(0);
  27.  
  28. //取得总行数
  29. $highestRow = $sheet->getHighestRow();
  30.  
  31. //取得总列数
  32. $highestColumm = $sheet->getHighestColumn();
  33.  
  34. //获取最大列值字母对应的数值
  35. $highestColummNum = PHPExcel_Cell::columnIndexFromString($highestColumm);
  36.  
  37. if (!$highestRow || !$highestColumm) {
  38. exit('表中无数据');
  39. }
  40.  
  41. //获取表格值进行存储
  42. $dataExcel = array();
  43.  
  44. $i = 0;
  45. //如果列值过大,进行计算,
  46. if ($highestColummNum > 26) {
  47. //循环读取每个单元格的数据
  48. for ($row = 2; $row <= $highestRow; $row++) {//行数是以第2行开始
  49. for ($column = 'A'; PHPExcel_Cell::columnIndexFromString($column) <= $highestColummNum; $column++) {//列数是以A列开始
  50. if ($column == 'E') {//假设第E列是日期
  51. $dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
  52. } else {
  53. $dataExcel[$i][] = $sheet->getCell($column.$row)->getValue();
  54. }
  55. }
  56. $i++;
  57. }
  58. } else {
  59. //循环读取每个单元格的数据
  60. for ($row = 2; $row <= $highestRow; $row++) {//行数是以第2行开始
  61. for ($column = 'A';$column <= $highestColumm; $column++) {//列数是以A列开始
  62. if ($column == 'E') {//假设第E列是日期
  63. $dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
  64. } else {
  65. $dataExcel[$i][] = $sheet->getCell($column.$row)->getValue();
  66. }
  67. }
  68. $i++;
  69. }
  70. }
  71.  
  72. if (!$dataExcel) {
  73. exit('未获取任何数据');
  74. }
  75.  
  76. print_r($dataExcel);
  77. exit;
  78.  
  79. /****知识点总结*****
  80. 1.列数值过大,可以通过 PHPExcel_Cell::columnIndexFromString($column),获取最大列的数值
  81.  
  82. 2.针对表格中有日期的,可以通过PHPExcel_Shared_Date::ExcelToPHP($value) 进行格式化,
  83. 如获取一个日期值,可如下面语句进行获取:
  84. $date = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
  85.  
  86. *******************/
  87. ?>
  88.   

PHPExcel所遇到问题的知识点总结的更多相关文章

  1. (实用篇)PHPExcel读取Excel文件的实现代码

    用PHPExcel读取Excel 2007 或者Excel2003文件,需要的朋友,可以参考下. 涉及知识点:  php对excel文件进行循环读取 php对字符进行ascii编码转化,将字符转为十进 ...

  2. ThinkPHP导入Excel文件(使用PHPExcel)

    一. 主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据.下载地址:http://phpexcel.codeplex.com/ O.开发 ...

  3. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  4. ASP.NET MVC开发:Web项目开发必备知识点

    最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...

  5. UWP开发必备以及常用知识点总结

    一直在学UWP,一直在写Code,自己到达了什么水平?还有多少东西需要学习才能独挡一面?我想对刚接触UWP的开发者都有这种困惑,偶尔停下来总结分析一下还是很有收获的! 以下内容是自己开发中经常遇到的一 ...

  6. phpexcel读取输出操作

    //读取 <?php header("Content-Type:text/html;charset=utf-8"); include 'Classes/PHPExcel.ph ...

  7. C#高级知识点&(ABP框架理论学习高级篇)——白金版

    前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...

  8. lucene 基础知识点

    部分知识点的梳理,参考<lucene实战>及网络资料 1.基本概念 lucence 可以认为分为两大组件: 1)索引组件 a.内容获取:即将原始的内容材料,可以是数据库.网站(爬虫).文本 ...

  9. DoraCMS 源码知识点备注

    项目需要研究了下DoraCMS这款开源CMS,真心做的不错:).用的框架是常用的express 4 + mongoose,代码也很规范,值得学习. 源码中一些涉及到的小知识点备注下: https:// ...

随机推荐

  1. python正则表达式(一)

    ---恢复内容开始--- 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计 ...

  2. Source map error

    前端访问接口时火狐浏览器控制台出现了这个问题, source map文件是js文件压缩后,文件的变量名替换对应.变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下. 比如压 ...

  3. unity仿微信飞机大战项目

    开发路线: 1,游戏背景(连续播放) 2,添加主角 3,设置游戏主角的动画 4,添加两种子弹并设置子弹的运动 5,添加三种子弹 设置子弹的自动生成和运动 6,添加两种奖励物品 设置奖励物品的自动生成和 ...

  4. quepy

    A python framework to transform natural language questions to queries in a database query language. ...

  5. idea其他人把jar更新之后更新不到

    昨天下午开始就发现这个问题,其他同事把jar更新了之后,我一直获取不到更新之后的内容.尝试了很多方法,删除具体的更新不到的jar,一直不停的mvn clean install -U -Dmaven.t ...

  6. java static learning

    /*static learning */ class one { public int a = 5; static { // 类加载时就运行代码码 System.out.println("s ...

  7. [Web 前端] 我不再使用React.setState的3个原因

    copy from : https://blog.csdn.net/smk108/article/details/85237838 从几个月前开始,我在新开发的React组件中不再使用setState ...

  8. Python - 列联表的独立性检验(卡方检验)

    Python - 列联表的独立性检验(卡方检验) 想对两个或两个以上因子彼此之间是否相互独立做检验时,就要用到卡方检验,原以为在Python中实现会像R的chisq.test一样简便,但scipy的s ...

  9. 一步步教你轻松学朴素贝叶斯模型算法Sklearn深度篇3

    一步步教你轻松学朴素贝叶斯深度篇3(白宁超   2018年9月4日14:18:14) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

  10. PL/SQL学习笔记之日期时间

    一:PL/SQL时间相关类型 PL/SQL提供两个和日期时间相关的数据类型: 日期时间(Datetime)数据类型 时间间隔类型 二:日期时间类型 datetime数据类型有: DATE TIMEST ...