PHPExcel读取表格


先引入类IOFactory.php


require_once '../PHPExcel/IOFactory.php';
$filePath = "test.xlsx"; // 测试文件

加载测试文件

  1. $inputFileType = PHPExcel_IOFactory::identify($filePath) 判断文件类型
  2. $objReader = PHPExcel_IOFactory::createReader($inputFileType); 实例化类型对象
  3. $objPHPExcel = $objReader->load($filePath); 加载文件

下面主要判断Excel2007和Excel5类型,即xlsx/xlsm/xltx/xltm和xls/xlt格式文件


try {
$inputFileType = PHPExcel_IOFactory::identify($filePath);
if ($inputFileType !== "Excel5" && $inputFileType !== "Excel2007" ) {
unlink($filePath) && str_alert(-1,"请确保导入的文件格式正确!");
}
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($filePath);
} catch(Exception $e) {
unlink($filePath) && str_alert(-1,'加载文件发生错误:”'.pathinfo($filePath,PATHINFO_BASENAME).'”: '.$e->getMessage());
}

获取当前工作表


$sheet = $objPHPExcel->getSheet(0);
//或者
$sheet = $objPHPExcel->getActiveSheet();

获取工作表行数和列数


$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

注意:有时候你会发现你的表格明明有内容的行数就5行,但是获取到的$highestRow却有7,8行或者更多,这可能是因为你在操作你的表格的时候不小心点击了其它行数,虽然没有填写内容,但getHighestRow也是能够识别出行数;
想要获取有内容的行数应该使用getHighestDataRow和getHighestDataColumn
源码注释是这样介绍的string Highest row number that contains data,即包含数据的字符串最高行数.

单元格具体内容

xlsx类型的表格单元格是通过类似xy轴坐标来获取的,

可通过类似


$sheet->getCell("A1")->getValue();
$sheet->getCell("B2")->getValue();

获取相应位置的内容,
如果不想通过字母了来遍历获取,可以用数字索引方法


$sheet->getCellByColumnAndRow(0,1);
$sheet->getCellByColumnAndRow(1,2);

注意坐标中第一个参数从0开始,0代表A,1代表B...,第二个参数从1开始.
下面是遍历表格获取全部单元格内容:


$dataSet=array();
for ($column = "A"; $column <= $highestColumn; $column++) {//列数是以A列开始
for ($row = 4; $row <= $highestRow; $row++) { //行数是以第4行开始
$cell = $sheet->getCell($column . $row)->getValue();
if($cell instanceof PHPExcel_RichText) { //富文本转换字符串
$cell = $cell->__toString();
}
$dataSet[$row][] = $cell;
}
}

其中富文本转换字符串,是使用$cell instanceof PHPExcel_RichText判断是否为富文本,查阅资料发现如果你的单元格中字符串包含两种以上的字体会自动被设为富文本,这时候需要__toString()转换

判断合并单元格是否位于最左上角

当我们循环输出所有单元格后发现,一些被合并的单元格只有最左上坐标的是有内容的,其他都是null
例如A4,A5合并成一个单元格,getCell("A4")是有正常内容的,但是getCell("A5")是null.
isMergeRangeValueCell可以用来判断某个具体的单元格是否为最左上角


$sheet->getCell('A' . $row)->isMergeRangeValueCell()

当$row为4的时候是返回true,5的时候返回false

转换时间

获取表格中时间格式的内容,需要PHPExcel_Shared_Date::ExcelToPHP()来转换为php可识别的时间格式


date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($sometime);

原文地址:https://segmentfault.com/a/1190000015707713

PHPExcel读取表格内容的更多相关文章

  1. 使用PHPExcel 读取 表格数据, 发现中文全变成 FALSE??

    出现这样的情况, 你可以看看你的表格是不是 CSV 格式的. 如果是, 那就赶紧另保存为 xls.xlsx 等格式的表格 . 因为 PHPExcel 对 Csv 的表格不感冒....

  2. Java——操作Excel表格,读取表格内容

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  3. OpenXml读取word内容(二)

    注意事项 上一篇已经说明,这次就不一一说了,直接来正文: word内容 相关代码 方法1 static void Main(string[] args) { string wordPathStr = ...

  4. C# 读取Excel表格内容,以及NPOI的使用

    在实际的开发中,我们可能需要读写word或者Excel的内容,在我开发的项目中,需要读取Excel的内容,并将相对应的内容存储到数据库中,这里简单跟大家分享一下,希望能够帮助一些人. 我相信在读写wo ...

  5. python读取word表格内容(1)

    1.首页介绍下word表格内容,实例如下: 每两个表格后面是一个合并的单元格

  6. java 读取 excel 表格内容

    一.添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...

  7. phpexcel读取输出操作

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

  8. php网址显示excel表格内容

    /** * excel表格内容在网页中显示 * * 首先需要下载PHPExcel 工具包 * 网址: http://phpexcel.codeplex.com/releases/view/119187 ...

  9. phpexcel 读取数据

    最近公司做一个客户导入会员的功能,以前导入都是使用csv格式导入的,但是客户反应问题挺多的,普遍是乱码(由于各种系统各种环境可能引起编码问题).最近想着就把这个导入完全改成excel导入,就研究了下p ...

随机推荐

  1. bzoj 4037: [HAOI2015]数字串拆分【dp+矩阵加速】

    首先f长得就很像能矩阵优化的,先构造转移矩阵(这里有一点神奇的地方,我看网上的blog和我构造的矩阵完全不一样还以为我的构造能力又丧失了,后来惊奇的发现我把那篇blog里的构造矩阵部分换成我的构造方式 ...

  2. Scala入门到精通

    原文出自于: http://my.csdn.net/lovehuangjiaju 感谢! 也感谢,http://m.blog.csdn.net/article/details?id=52233484 ...

  3. docker速记

    1.docker:一个轻量级的虚拟机.是一个容器 2.Linux系统包括—RedHat(商业版).Centos.Ubuntu 3.docker比作码头的集装箱,image镜像就是基石,images类似 ...

  4. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  5. Manven下载

        1.下载地址:http://maven.apache.org/download.cgi          2.点击下载链接          3.解压zip到安装路径  我的:C:\Progr ...

  6. 理解C++中拷贝构造函数

    拷贝构造函数的功能是用一个已有的对象来初始化一个被创建的同样对象,是一种特殊的构造函数,具有一般构造函数的所有特性,当创建一个新对象的时候系统会自动调用它:其形参是本类对象的引用,它的特殊功能是将参数 ...

  7. Apple Tree POJ - 2486

    Apple Tree POJ - 2486 题目大意:一棵点带权有根树,根节点为1.从根节点出发,走k步,求能收集的最大权值和. 树形dp.复杂度可能是O(玄学),不会超过$O(nk^2)$.(反正这 ...

  8. Kali linux 2016.2(Rolling) 的详细安装(图文教程)附安装VMare Tools 增强工具

    写在前面的话 因读研期间,实验室团队需要,所以,接触上了Kali Linux,需去获得网络安全方面的数据,即数据和信息收集.以便为后续的数据处理和分析,准备! 用到hadoop和spark.机器学习等 ...

  9. JDBC连接Oracle工具类

    import java.sql.*;import java.util.ResourceBundle; /** * jdbc工具类,负责: * 1. 加载/注册数据库驱动程序 * 2. 获取数据库连接 ...

  10. 2017广东工业大学程序设计竞赛决赛 G 等凹数字

    题意: Description 定义一种数字称为等凹数字,即从高位到地位,每一位的数字先非递增再非递减,不能全部数字一样,且该数是一个回文数,即从左读到右与从右读到左是一样的,仅形成一个等凹峰,如54 ...