ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格
下载 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 如图:
右键 -- 属性:

参考:
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格的更多相关文章
- 使用PHPExcel解析Excel表格
安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目 ...
- phpexcel导入excel表格
html代码 <form action="{:U('Mall/updExcel')}" method="POST" enctype="multi ...
- Thinkphp 3.2.2 利用phpexcel完成excel导出功能
首先百度搜索phpexcel 包,放到项目的这个目录下 接下来 是controller里的导出代码 /**导出预定产品用户信息 * 大白驴 675835721 *2016-12-12 **/pub ...
- php:PHPExcel导出excel表格
一.动态生成的内容如何能当成文件来下载呢? 方法:1.将Content-Type设置成application/octet-stream就可以了,即[header('Content-Type: appl ...
- PHPExcel导出excel表格
if(!function_exists('exportExcel')){ //导出excel文件 function exportExcel($datas, $save_method='ht ...
- phpexcel获取excel表格内容
excel表格式: 代码: $objPHPExcel=PHPExcel_IOFactory::load($excelFilePath);//$file_url即Excel文件的路径 $sheet=$o ...
- PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法
方法一:前面加空格 $objActSheet->setCellValue('A1', ' '.'330602198804224688'); 方法二: $objActSheet->setCe ...
- Thinkphp 用PHPExcel 导入Excel
搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有P ...
- Thinkphp框架下PHPExcel实现Excel数据的批量化导入导出
第一步:下载官方的PHPExcel文件,下载地址https://github.com/PHPOffice/PHPExcel 第二步:解压打开,将PHPExcel\Classes\全部文件拷贝到thin ...
随机推荐
- PowerDesigner使用
首先我们需要创建一个测试数据库,为了简单,我们在这个数据库中只创建一个Student表和一个Major表.其表结构和关系如下所示. 看看怎样用PowerDesigner快速的创建出这个数据库吧. 1. ...
- mac mysql cmd
sudo /usr/local/mysql/support-files/mysql.server start sudo /usr/local/mysql/support-files/mysql.ser ...
- MySQL5.6 新特性之GTID
背景: MySQL5.6在5.5的基础上增加了一些改进,本文章先对其中一个一个比较大的改进"GTID"进行说明. 概念: GTID即全局事务ID(global transactio ...
- 跨域调用webapi
web端跨域调用webapi 在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案. 通过自己的研究以及在网上看了一些大神的博客,写了一个Demo 首先新建一个webap ...
- 【Java EE 学习 15】【自定义数据库连接池之动态代理的使用】
一.动态代理的作用 使用动态代理可以拦截一个对象某个方法的执行,并执行自定义的方法,其本质是反射 优点:灵活 缺点:由于其本质是反射,所以执行速度相对要慢一些 二.数据库连接池设计思想 1.为什么要使 ...
- rhel5.8安装oracle 10g ASM
1.所有的配置和文件系统一样 2.规划: 加了8块小盘,ASM为了实验使用asmlib驱动(rhel6不再支持asmlib驱动),裸设备的2种方法(rowdevice和udev) 三块盘使用asmli ...
- singleton pattern的推荐实现
一.单例模式的C#实现: (1)使用double-checked locking的方式: public sealed class Singleton { private static volatile ...
- [CSS]Input标签与图片按钮对齐
页面直接摆放一个input文本框与ImageButton图片按钮,但是发现没有对齐: <input type="text" id="txtQty" /&g ...
- 试听笔记:javascript入门精通
一.数据类型 1.原始类型:number.string.boolean.null.undefined 2.对象类型:Object (Function.Array.Date...) P.类型隐式转换:' ...
- 虚拟树Demos\Minimal 简单的例子
//分析虚拟树demo6-VirtualTreeView\VirtualTreeViewV5.3.0\Demos\Minimal的main.pas文件 unit Main; // Demonstrat ...