PHP读取Excel文件内容

项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel。

PHPExcelReader比较轻量级,仅支持Excel的读取,实际上就是一个Reader。但是可惜的是不能够支持Excel 2007的格式(.xlsx)。

PHPExcel比较强大,能够将内存中的数据输出成Excel文件,同时还能够对Excel做各种操作,下面主要介绍下如何使用PHPExcel进行Excel 2007格式(.xlsx)文件的读取。

下载PHPExcel后保存到自己的类文件目录中,然后使用以下代码可以打开Excel 2007(xlsx)格式的文件:

require_once '/libs/PHPExcel-1.8.0/Classes/PHPExcel.php';     //修改为自己的目录
echo '<p>TEST PHPExcel 1.8.0: read xlsx file</p>';
$objReader = PHPExcel_IOFactory::createReaderForFile($filename); 
$objPHPExcel = $objReader->load($filename);
$objPHPExcel->setActiveSheetIndex(1);
$date = $objPHPExcel->getActiveSheet()->getCell('A16')->getValue();

输出$date变量就能够看到文件中的内容了。PHPExcel使用PHPExcel_IOFactory这个类来自动匹配所上传的文件类型,当然我们也可以自己制定要解析的文件类型。之后通过load方法,将PHP文件加载到objPHPExcel对象中。如果Excel文件有多个Sheet,可以通过setActiveSheetIndex来设置当前活动的Sheet。如何通过Sheet名来获得当前Sheet我还不知道,如果有知道的可以站内我。

需要注意的是,对于Excel中的日期格式,PHPExcel读出来的是不是日期类型,需要我们使用以下方法来进行日期类型转换。

echo date("Y-m-d H:i:s",PHPExcel_Shared_Date::ExcelToPHP($date));

下面的代码显示了如何遍历显示Excel的内容:

 1 <table id="table_id">
 2 <?php
 3      $objWorksheet = $objPHPExcel->getActiveSheet();
 4      $i = 0;
 5      foreach($objWorksheet->getRowIterator() as $row){
 6      ?>
 7           <tr>
 8           <?php
 9                $cellIterator = $row->getCellIterator();
10                $cellIterator->setIterateOnlyExistingCells(false);
11 
12                     if( $i == 0 ){
13                          echo '<thead>';
14                     }
15                foreach($cellIterator as $cell){
16 
17                     echo '<td>' . $cell->getValue() . '</td>';
18 
19                }
20                     if( $i == 0 ){
21                          echo '</thead>';
22                     }
23                $i++;
24           ?>
25           </tr>
26      <?php
27      }
28 ?>
29 </table>

参考资料:

1、PHPExcel官网

2、使用PHPExcel判断和格式化Excel中的日期

3、PHPExcel中文帮助(知识点)

4、利用PHPExcel导入导出Excel文件

5、PHPExcel常用功能指南

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瓜大三哥

vim命令总结

2317
来自专栏木子墨的前端日常

Vue-Router基础使用

作为Vue生态系统里面的一大成员,Vue-Router主要负责vue中的页面路由及其传值问题。

1452
来自专栏Golang语言社区

golang中发送http请求的几种常见情况

整理一下golang中各种http的发送方式 最初的一些项目中,很多的地方都使用到了golang发送http请求,之后再对请求收到的结果进行一些处理,所用到的模...

1.2K8
来自专栏光变

Vim实现批量注释的方法

调试代码的时候,免不了要批量注释/取消代码注释,很多IDE都有快捷键将你选中的…

1171
来自专栏性能与架构

nodejs 执行机制

nodejs接收到异步请求后,先封装好请求对象,然后交由线程处理,处理完成后把请求对象放入事件队列 nodejs有一个事件循环,每次循环时获取队列中的请求对象,...

3808
来自专栏Micro_awake web

HTML/HTML5 Input类型&&表单

1.HTML 中"不常用"input类型中的属性值: disabled:输入字段禁用; maxlength:输入字段的最大字符长度; readonly:输入字符...

3017
来自专栏阮一峰的网络日志

Javascript异步编程的4种方法

你可能知道,Javascript语言的执行环境是"单线程"(single thread)。 所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排...

2775
来自专栏linux驱动个人学习

如何增加内核模块

Kconfig 1.先了解一下Kconfig的语法:  一个典型的内核配置菜单如下: menu "Network device support"  config...

3375
来自专栏Java后端技术

Linux的Bash Shell详解

  1.什么是bash           bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来的,是用户和Linux内核交互...

1044
来自专栏软件测试经验与教训

回放loadrunner脚本时log区中文显示乱码,怎么破?

40412

扫码关注云+社区

领取腾讯云代金券