首先下载插件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. Xcode的Refactor使用

    最近在看<重构>的书,想到Xcode有一个Refactor的功能,不知道您用的多不多,用这个功能在我们开发过程中,可以提高开发效率. Refactor 右键显示 Refactor 一.Re ...

  2. Celery-4.1 用户指南: Monitoring and Management Guide (监测和管理指南)

    简介 Celery 提供了监控和探查celery集群的工具. 这篇文档描述了一些工具,以及与监控相关的一些特性,例如事件和广播命令. 工作单元 命令行管理工具(inspect/control) Cel ...

  3. 2016.5.30实现透明Panel及控件置顶的方法

    想放置一个透明Panel在某控件上端,实现效果是可透过此Panel看见下面控件,但鼠标点击却无任何反应. 1.新建置自定义Panel类 using System; using System.Colle ...

  4. 问题:oracle 两个表之间的修改;结果:ORACLE 两个表之间更新的实现

    前提条件: 表info_user中有字段id和name,字段id为索引 表data_user_info中有字段id和name,字段id为索引 其中表info_user中字段id和表data_user_ ...

  5. SQLServer SDK

    https://www.cnblogs.com/Leo_wl/p/3451865.html 回到目录 SQLSERVER一些公用DLL的作用解释 如果你的SQLSERVER安装在C盘的话,下面的路径就 ...

  6. EF事务封装

    public class EFTransaction:ITransaction { DbContextTransaction originalTransaction = null; MyDbConte ...

  7. Solr查询错误

    报错: Exception in thread "main" java.lang.VerifyError: Bad return type Exception Details: L ...

  8. Pandoc+markdown生成slides

    Pandoc+markdown生成slides 参考:http://blog.csdn.net/pizi0475/article/details/50955900 1.安装 http://pandoc ...

  9. TabHost两种不同的实现方式

    第一种:继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.只要定义具体Tab内容布局就行了 第二种:不用继承TabActivity,在布局文件中定 ...

  10. Entity Framework Code-First(23):Entity Framework Power Tools

    Entity Framework Power Tools: Entity Framework Power Tools (currently in beta 3) has been released. ...