首先下载插件PHPExcel (PHPExcel-1.8),以tp5框架为例,将该文件放在verdor文件夹下。然后引入IOFactory文件。

1.读取文件的部分内容(用于固定格式)

 public function readExcel($filename){
try {
Vendor('PHPExcel/PHPExcel/IOFactory');
$reader = \PHPExcel_IOFactory::createReader('Excel2007');
$PHPExcel = $reader->load($filename); // 文档名称
$objWorksheet = $PHPExcel->getActiveSheet(); #获取当前sheet
$highestRow = $objWorksheet->getHighestRow(); // 取得总行数
$highestColumn = $objWorksheet->getHighestColumn(); // 取得总列数
$data = array();
for ($row = 1; $row <= $highestRow; $row++) {
#从第二行开始,依次获取多少列的内容 因为第一行一般是表头 也可再加一个for循环 获取每一列的内容
$A = $objWorksheet->getCellByColumnAndRow(0, $row)->getValue();
$B = $objWorksheet->getCellByColumnAndRow(1, $row)->getValue();
array_push($data,$A,$B);
}
return $data;
} catch (Exception $e) {
$this->ajaxReturn(array(
'code' => -1,
'msg' => $e->getMessage()
));
}
}

readExcel

注:默认从第一行开始,读取A列和B列,以数组的形式返回,但是可以自定义。传入文件路径即可

2.读取文件的全部内容(用于多变,未知格式)

 public function excelread($path){
try {
Vendor('PHPExcel/PHPExcel/IOFactory');
$reader = \PHPExcel_IOFactory::createReader('Excel5');
$PHPExcel = $reader->load($path); // 文档名称
$objWorksheet = $PHPExcel->getSheet(0); #获取当前sheet
$highestRow = $objWorksheet->getHighestRow(); // 取得总行数
$highestColumn = $objWorksheet->getHighestColumn(); // 取得总列数
$data =array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 'A'; $col != $highestColumn; $col ++) {
#从第二行开始,依次获取多少列的内容 因为第一行一般是表头 也可再加一个for循环 获取每一列的内容
$res = $objWorksheet->getCell($col.$row)->getValue();
$res = mb_convert_encoding($res, "UTF-8", "GBK");
$data[$col][$row] = $res;
}
}
return $data;
} catch (Exception $e) {
$this->ajaxReturn(array(
'code' => -1,
'msg' => $e->getMessage()
));
}
}

3.生成excel文件在线下载

 #添加内容
#$data=array(
# array(),
# array("","name","greate"),
# array("","xuzhan","12"),
# array("","paopao","24")
#);
public function excel_export($data)
{
try {
Vendor('PHPExcel/PHPExcel/IOFactory');
$obj = new \PHPExcel();
$objsheet=$obj->getActiveSheet();
#设置sheet的名称
#$objsheet->setTitle("demo");
$objsheet->fromArray($data);
#按照指定格式保存文件,保存文件
header('Content-Type: application/vnd.ms-excel');
//下载的excel文件名称,为Excel5,后缀为xls,不过影响似乎不大
header('Content-Disposition: attachment;filename="' . time() . '.xlsx"');
header('Cache-Control: max-age=0');
$objWriter=\PHPExcel_IOFactory::createWriter($obj,"Excel2007"); //通过PHPExcel_IOFactory的写函数将上面数据写出来
$objWriter->save('php://output');
} catch (Exception $e) {
$this->ajaxReturn(array(
'code' => -1,
'msg' => $e->getMessage()
));
}
}

4. 另外一种生成方式

public function excel_export($data)
{
try {
Vendor('PHPExcel/PHPExcel/IOFactory');
$obj = new \PHPExcel();
$objsheet=$obj->getActiveSheet();
#设置sheet的名称
#$objsheet->setTitle("demo");
$objsheet->fromArray($data);
#按照指定格式保存文件,保存文件
header('Content-Type: application/vnd.ms-excel');
//下载的excel文件名称,为Excel5,后缀为xls,不过影响似乎不大
header('Content-Disposition: attachment;filename="' . time() . '.xlsx"');
header('Cache-Control: max-age=0');
$objWriter=\PHPExcel_IOFactory::createWriter($obj,"Excel2007"); //通过PHPExcel_IOFactory的写函数将上面数据写出来
$objWriter->save('php://output');
} catch (Exception $e) {
$this->ajaxReturn(array(
'code' => -1,
'msg' => $e->getMessage()
));
}
}

php 读取excel文件的更多相关文章

  1. C# 读取EXCEL文件的三种经典方法

    1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...

  2. c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出

    c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...

  3. ADO.NET 读取Excel文件,并作数据源

    项目中需要用的功能,贴上代码了. 需要注意的地方:配置Web.config的时候要注意版本问题! //若是在Web.config中配置数据源,如下 <add key="ExcelCon ...

  4. PHPExcel读取Excel文件的实现代码

    <?php require_once 'PHPExcel.php'; /**对excel里的日期进行格式转化*/ function GetData($val){ $jd = GregorianT ...

  5. .Net读取Excel文件时丢失数据的问题 (转载)

    相信很多人都试过通过OleDB读取Excel文件,这种方法效率十分高,只是有一点会让人十分头痛,就是当一列中既有混合型数据,又有纯数据时,往往容易丢失数据. 百度过后,改连接字符串 “HDR=YES; ...

  6. 使用jxl,poi读取excel文件

    作用:在java后台添加一个方法,读取导入的excel内容,根据需要返回相应的sql语句,以完成对临时表的插入操作. 使用jxl读取excel文件 package com.sixthf.bi.sapp ...

  7. C# 读取Excel文件里面的内容到DataSet

    摘要:读取Excel文件里面的内容到DataSet 代码: /// <summary> /// 读取Excel文件里面的内容到DataSet /// </summary> // ...

  8. R语言读取excel文件的3种方法

    R读取excel文件中数据的方法: 电脑有一个excel文件,原始的文件路径是:E:\R workshop\mydata\biom excel数据为5乘2阶矩阵,元素为                ...

  9. C#读取Excel文件:通过OleDb连接,把excel文件作为数据源来读取

    转载于:http://developer.51cto.com/art/200908/142392.htm C#读取Excel文件可以通过直接读取和OleDb连接,把excel文件作为数据源来读取:   ...

  10. 上传读取Excel文件数据

    /// <summary> /// 上传读取Excel文件数据 /// 来自http://www.cnblogs.com/cielwater /// </summary> // ...

随机推荐

  1. 第九章 Servlet工作原理解析(待续)

    从 Servlet容器说起 创建 Servlet实例 Servlet体系结构 Servlet如何工作 Servlet中的Listener Filter如何工作 Servlet中的url-pattern

  2. HADOOP HDFS BALANCER介绍及经验总结(转)

    1.集群执行balancer命令,依旧不平衡的原因是什么?该如何解决? 2.尽量不在NameNode上执行start-balancer.sh的原因是什么? 集群平衡介绍 Hadoop的HDFS集群非常 ...

  3. python的print字符串的输出

    字符串的输出使用print语句,在每个语句的输出的时候我们使用' '和" "来包含字符串比如: 如果有多个字符串的话呢我们需要用”,“来进行连接: 我们不仅可以使用字符来进行输出时 ...

  4. 第2章 netty介绍与相关基础知识

    NIO有一个零拷贝的特性.Java的内存有分为堆和栈,以及还有字符串常量池等等.如果有一些数据需要从IO里面读取并且放到堆里面,中间其实会经过一些缓冲区.我们要去读,它会分成两个步骤,第一块它会把我们 ...

  5. matlab基础功能实践

    一.matlab在高等数学中的应用(<数学建模算法与应用>P453) 1.求极限 syms x b=limit((sqrt(1+x^2)-1)/(1-cos(x))) syms x a b ...

  6. android json解析(JSONObject方法实现)

    今天刚刚学到json解析,看了一整天,大概了解到json就是你通过一个API(我用的聚合数据的API)发送一个请求,接着会收到json数据,比如说天气预报吧,他会给你发送一大段字符串,大概是未来几天的 ...

  7. 10.model/view实例(1)

    1.如图显示一个2x3的表格: 思考: 1.QTableView显示这个表 2.QAbstractTableModel作为模型类. 3.文档中找到subclass的描述 When subclassin ...

  8. Google androd性能优化经典

    2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...

  9. WebGoat系列实验Cross-Site Scripting (XSS)

    WebGoat系列实验Cross-Site Scripting (XSS) PhishingTitle 本次实验是在一个已知存在XSS漏洞的页面进行钓鱼攻击.通过使用XSS与HTML注入,在页面中注入 ...

  10. 回溯法和DFS leetcode Combination Sum

    代码: 个人浅薄的认为DFS就是回溯法中的一种,一般想到用DFS我们脑中一般都有一颗解法树,然后去按照深度优先搜索去寻找解.而分支界限法则不算是回溯,无论其是采用队列形式的还是优先队列形式的分支界限法 ...