下载 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. PHP HTML代码反转义

    后端为了防止xss的攻击,会过滤前端用户的输入的数据,这样虽然有效的避免xss攻击,但是会带来一个问题,要么全部过滤html留下不非法的数据,要么把HTML代码转义,但是转义之后又会直接在浏览器内显示 ...

  2. 各大搜索引擎智能提示API(JSONP跨域实现自动补全搜索建议)

    ---------------------------------------搜索引擎JSONP接口--------------------------------------------- 提示:U ...

  3. 字符串专题:KMP POJ 3561

    http://poj.org/problem?id=3461 KMP这里讲的不错next的求法值得借鉴 http://blog.sina.com.cn/s/blog_70bab9230101g0qv. ...

  4. __new__方法

    __new__:创建对象时调用,返回当前对象的一个实例__init__:创建完对象后调用,对当前对象的实例的一些初始化,无返回值 案例一: >>> class A(object): ...

  5. python之路九

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

  6. ASP.NET基础代码备忘

    使用ASP.NET原生的__doPostBack方法触发asp:Button //javaScript部分 __doPostBack('<%=btnAmountDivided.UniqueID ...

  7. iOS 获取键盘view 覆盖新view

    UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject];    UIView * keyview=[[w ...

  8. python常见数据类型

    字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串烦人过程其实很简单,只需为变量分配一个值即可.例如: var = 'Hello Wor ...

  9. 错误:ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 的解决办法--转载但验证过后可以用

    今天,用iSQL*Plus 以sys用户连接数据库的时候报ORA-28009:connection as sys should be as sysdba or sysoper的错误,不知道是怎么回事, ...

  10. @Html.Partial和@Html.Action区别

    1.首先看一下它们的对等关系 @Html.Partial 对应 @{Html.RenderPartial();}@Html.Action 对应 @{Html.RenderAction();} 以上相互 ...