下载 PHPExcel(https://github.com/PHPOffice/PHPExcel)

把下载的 zip 包解压至 ./ThinkPHP/Library/Vendor 下

一、导入 Excel 数据

控制器自定,这里用 IndexController.class.php

<?php
namespace Home\Controller;
use Think\Controller; class IndexController extends Controller { // 导入 Excel
public function excel() { header('Content-type: text/html; charset=utf-8'); vendor('PHPExcel.Classes.PHPExcel');
$file = './Data/example.xlsx'; $Excel = new \PHPExcel();
// 如果excel文件后缀名为.xls
// vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5");
// 如果excel文件后缀名为.xlsx
vendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007");
$PHPReader = new \PHPExcel_Reader_Excel2007(); // 载入文件
$Excel = $PHPReader -> load($file); //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet = $Excel -> getSheet(0);
//获取总列数
$allColumn = $currentSheet -> getHighestColumn();
//获取总行数
$allRow = $currentSheet -> getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
for($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
//从哪列开始,A表示第一列
for($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
//数据坐标
$address = $currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中
$arr[$currentRow][$currentColumn] = $currentSheet
-> getCell($address)
-> getValue();
} }
echo '<pre>';
var_export($arr);
}
}

输出:

array (
1 =>
array (
'A' => '分公司名称',
'B' => '姓名',
'C' => '金额',
),
2 =>
array (
'A' => 'A分公司',
'B' => '赵娟',
'C' => 1100,
),
3 =>
array (
'A' => 'B分公司',
'B' => '孔坚',
'C' => 1100,
),
4 =>
array (
'A' => 'C分公司',
'B' => '王华发',
'C' => 1300,
),
5 =>
array (
'A' => 'C分公司',
'B' => '赵辉',
'C' => 700,
),
6 =>
array (
'A' => 'B分公司',
'B' => '华发',
'C' => 1400,
),
7 =>
array (
'A' => 'A分公司',
'B' => '赵德国',
'C' => 700,
),
8 =>
array (
'A' => 'B分公司',
'B' => '沈芳虹',
'C' => 500,
),
9 =>
array (
'A' => 'C分公司',
'B' => '周红玉',
'C' => 1100,
),
10 =>
array (
'A' => 'A分公司',
'B' => '施芬芳',
'C' => 800,
),
11 =>
array (
'A' => 'A分公司',
'B' => '蒋国建',
'C' => 1100,
),
12 =>
array (
'A' => 'B分公司',
'B' => '钱毅',
'C' => 1400,
),
13 =>
array (
'A' => 'B分公司',
'B' => '陈华惠',
'C' => 1200,
),
14 =>
array (
'A' => 'C分公司',
'B' => '曹香',
'C' => 1400,
),
15 =>
array (
'A' => 'A分公司',
'B' => '郑红妙',
'C' => 600,
),
16 =>
array (
'A' => 'A分公司',
'B' => '王宏仁',
'C' => 800,
),
17 =>
array (
'A' => 'C分公司',
'B' => '何丹美',
'C' => 1300,
),
)

  

需要导入的 Excel 文件如下:

  

二、导出 Excel

    // 导出 Excel
public function export() { vendor('PHPExcel.Classes.PHPExcel');
$Excel = new \PHPExcel(); $arr = array ( 1 => array ( 'A' => '分公司名称', 'B' => '姓名', 'C' => '金额', ), 2 => array ( 'A' => 'A分公司', 'B' => '赵娟', 'C' => 1100, ), 3 => array ( 'A' => 'B分公司', 'B' => '孔坚', 'C' => 1100, ), 4 => array ( 'A' => 'C分公司', 'B' => '王华发', 'C' => 1300, ), 5 => array ( 'A' => 'C分公司', 'B' => '赵辉', 'C' => 700, ), 6 => array ( 'A' => 'B分公司', 'B' => '华发', 'C' => 1400, ), 7 => array ( 'A' => 'A分公司', 'B' => '赵德国', 'C' => 700, ), 8 => array ( 'A' => 'B分公司', 'B' => '沈芳虹', 'C' => 500, ), 9 => array ( 'A' => 'C分公司', 'B' => '周红玉', 'C' => 1100, ), 10 => array ( 'A' => 'A分公司', 'B' => '施芬芳', 'C' => 800, ), 11 => array ( 'A' => 'A分公司', 'B' => '蒋国建', 'C' => 1100, ), 12 => array ( 'A' => 'B分公司', 'B' => '钱毅', 'C' => 1400, ), 13 => array ( 'A' => 'B分公司', 'B' => '陈华惠', 'C' => 1200, ), 14 => array ( 'A' => 'C分公司', 'B' => '曹香', 'C' => 1400, ), 15 => array ( 'A' => 'A分公司', 'B' => '郑红妙', 'C' => 600, ), 16 => array ( 'A' => 'A分公司', 'B' => '王宏仁', 'C' => 800, ), 17 => array ( 'A' => 'C分公司', 'B' => '何丹美', 'C' => 1300, ), ); // 设置
$Excel
->getProperties()
->setCreator("dee")
->setLastModifiedBy("dee")
->setTitle("数据EXCEL导出")
->setSubject("数据EXCEL导出")
->setDescription("数据EXCEL导出")
->setKeywords("excel")
->setCategory("result file"); foreach($arr as $key => $val) { // 注意 key 是从 0 还是 1 开始,此处是 0
// $num = $key + 1;
$Excel ->setActiveSheetIndex(0)
//Excel的第A列,uid是你查出数组的键值,下面以此类推
->setCellValue('A'.$key, $val['A'])
->setCellValue('B'.$key, $val['B'])
->setCellValue('C'.$key, $val['C']);
} $Excel->getActiveSheet()->setTitle('export');
$Excel->setActiveSheetIndex(0);
$name='example_export.xlsx'; header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename='.$name);
header('Cache-Control: max-age=0'); $ExcelWriter = \PHPExcel_IOFactory::createWriter($Excel, 'Excel2007');
$ExcelWriter->save('php://output');
exit;
}

导出的 example_export.xlsx 如图:

  

右键 -- 属性:

参考:

thinkphp3.2整合phpexcel

利用phpExcel实现Excel数据的导入导出(全步骤详细解析)

ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格的更多相关文章

  1. 使用PHPExcel解析Excel表格

    安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目 ...

  2. phpexcel导入excel表格

    html代码 <form action="{:U('Mall/updExcel')}" method="POST" enctype="multi ...

  3. Thinkphp 3.2.2 利用phpexcel完成excel导出功能

    首先百度搜索phpexcel  包,放到项目的这个目录下 接下来  是controller里的导出代码 /**导出预定产品用户信息 * 大白驴 675835721 *2016-12-12 **/pub ...

  4. php:PHPExcel导出excel表格

    一.动态生成的内容如何能当成文件来下载呢? 方法:1.将Content-Type设置成application/octet-stream就可以了,即[header('Content-Type: appl ...

  5. PHPExcel导出excel表格

    if(!function_exists('exportExcel')){    //导出excel文件    function exportExcel($datas, $save_method='ht ...

  6. phpexcel获取excel表格内容

    excel表格式: 代码: $objPHPExcel=PHPExcel_IOFactory::load($excelFilePath);//$file_url即Excel文件的路径 $sheet=$o ...

  7. PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法

    方法一:前面加空格 $objActSheet->setCellValue('A1', ' '.'330602198804224688'); 方法二: $objActSheet->setCe ...

  8. Thinkphp 用PHPExcel 导入Excel

    搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有P ...

  9. Thinkphp框架下PHPExcel实现Excel数据的批量化导入导出

    第一步:下载官方的PHPExcel文件,下载地址https://github.com/PHPOffice/PHPExcel 第二步:解压打开,将PHPExcel\Classes\全部文件拷贝到thin ...

随机推荐

  1. 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码

    Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...

  2. 【ZJOI2008】 树的统计 count

    Description 一 棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. ...

  3. word如何插入目录

    word如何插入目录 百度经验:jingyan.baidu.com 在写文章的时候我们需要插入目录,如果自己手动添加目录会非常麻烦,以后修改文章的时候还得修改目录的页码,还好Word中有自动添加目录的 ...

  4. Andorid实现点击获取验证码倒计时效果

    这篇文章主要介绍了Andorid实现点击获取验证码倒计时效果,这种效果大家经常遇到,想知道如何实现的,请阅读本文   我们在开发中经常用到倒计时的功能,比如发送验证码后,倒计时60s再进行验证码的获取 ...

  5. .NET LINQ数据转换

    使用 LINQ 进行数据转换      语言集成查询 (LINQ) 不仅可用于检索数据, 而且还是一个功能强大的数据转换工具. 通过使用 LINQ 查询,您可以将源序列用作输入,并采用多种方式修改它以 ...

  6. 利用委托与Lambada创建和调用webapi接口

    前言 现在项目中用的是webapi,其中有以下问题:    1.接口随着开发的增多逐渐增加相当庞大. 2.接口调用时不好管理. 以上是主要问题,对此就衍生了一个想法: 如果每一个接口都一个配置文件来管 ...

  7. C#回顾 - 8.利用反射动态创建对象

    拿微信消息返回的示例数据实验 var data = "<xml><ToUserName><![CDATA[toUser]]></ToUserName ...

  8. Oracle查询实用命令

    1.设置每行的长度: SET LIN[ESIZE] 200; 2.设置分页数量: SET PAGES[IZE] 50; 3.查看表空间相关信息: select file_id, tablespace_ ...

  9. 最大公约数和最小公倍数--java实现

    代码: //最大公约数 public int gcd(int p,int q){ if(q == 0) return p; return gcd(q, p % q); } //最小公倍数 public ...

  10. Android UI 之实现多级列表TreeView

    所谓TreeView就是在Windows中常见的多级列表树,在Android中系统只默认提供了ListView和ExpandableListView两种列表,最多只支持到二级列表的实现,所以如果想要实 ...