首先下载插件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. 下拉框改变事件:获取下拉框中当前选择的文本 SelectionChanged事件

    /// <summary> /// 下拉框改变事件:获取下拉框中当前选择的文本 /// </summary> /// <param name="sender&q ...

  2. JavaScript中给对象添加方法

    在JavaScript中,我们经常要给已定义的对象添加一些方法,如下:    function circle(w,h){      this.width=w;      this.height=h; ...

  3. docker 笔记(4) Dockerfile 常用的指令

    下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档. FROM指定 base 镜像. MAINTAINER设置镜像的作者,可以是任意字符串. COPY将文件从 build ...

  4. struts2学习笔记(4)接收参数

    ①用action属性接收 登录界面例子 在webroot下创建login.jsp和success.jsp login.jsp中加入表单: <form action="LoginActi ...

  5. 使用ffmpeg转换视频格式

    命令: ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y outfile   说明: ...

  6. 3-3 zookeeper的作用体现

    zookeeper比较重要的一个模式:选举模式,这也是高可用的一个体现.公司的董事长.副董事长.董事会常理员以及老总和副总,他们并不会乘坐同一班飞机,而是会分为两班或者三班飞机一起去,也就是我们所谓的 ...

  7. 使用Java创建JSON数据

    --------------siwuxie095                             工程名:TestCreateJSON 包名:com.siwuxie095.json 类名:Cr ...

  8. Boost log中的几个问题

    1. 使用动态库时,要定义 BOOST_LOG_DYN_LINK  或者 BOOST_ALL_DYN_LINK 否则会出现如下错误: CMakeFiles/xxxx.dir/xxxx.cpp.o: I ...

  9. jdbc--1 一些方法的封装

    今日内容介绍1.JDBC2.DBUtils====================================================================1 JDBC概念和数据 ...

  10. Osmotic Study ----Mysql Safe

    Thanks Ichunqiu company.I have a chance to learn some lessons for free in five days till 10.1 this y ...