下载 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. sql语句,多个表之间,通过相同内容字段的联合查询

    1 , select j.id,         jt.Name,        j.ApproveType ,         j.ProductCode,         j.CustomerCo ...

  2. coding.net就这么横空出世

    各位新生们好: 看罢以上的开场白博客,我们也算初步完成了一个小程序——hello world.再进一步想下去,若我们程序写大了,要不停修改了(1000行代码不长,只争朝夕:-D),该如何保存呢?保存到 ...

  3. python之路九

    paramiko paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接 ssh执行命令: import paramikossh = pa ...

  4. python 小试题

    有个同事要帮一个朋友做一个小试题,题目如图: 由于个人在学习python路上,所以想用python 写出来这道题,来练练手,苦思冥想,再加上受同事的一些启发,加以扩展,写出代码如下: #!/usr/b ...

  5. java19

    1:异常(理解) (1)程序出现的不正常的情况. (2)异常的体系 Throwable |--Error 严重问题,我们不处理. |--Exception |--RuntimeException 运行 ...

  6. java20

    1:递归(理解) (1)方法定义中调用方法本身的现象 举例:老和尚给小和尚讲故事,我们学编程 (2)递归的注意事项: A:要有出口,否则就是死递归 B:次数不能过多,否则内存溢出 C:构造方法不能递归 ...

  7. js颠倒数组元素顺序reverse()

    颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序. 语法: arrayObject.reverse() 注意:该方法会改变原来的数组,而不会创建新的数组. 定义数组 ...

  8. Knockout.js随手记(5)

    以列表方式呈现数据  处理以数组形式储存的多条数据,要先认识foreach.在ViewModel定义一个JavaScript Array或是ko.observableArray() (observab ...

  9. 关于action和category的认知区别

    在我的了解, action: intent 有一个或多个action,如果过滤规则中能够匹配到其中一个,是可以成功的 category: intent有一个或多个category,过滤规则需要满足对应 ...

  10. java-集合2

    浏览以下内容前,请点击并阅读 声明 下面对集中核心集合的接口分别总结 Collection接口 一般情况下,集合的实现类会有一个含有Collection类型为参数的构造器,可以由一个指定的集合类创建该 ...