TP5.0 excel 导入导出
引第三方的phpexcel类库放到 ThinkPHP\Library\Vendor\demo下,自己建的文件夹demo
再将Excel.class放到ThinkPHP\Library\Org\class下,自己建的文件夹class
控制器:
<?php
namespace Admin\Controller;
use Think\Controller;
class ExcelController extends Controller {
public function excelList(){
$this->display();
}
// 导入
public function import(){
if(!empty($_FILES['file_stu']['name'])){
$tmp_file = $_FILES['file_stu']['tmp_name']; //临时文件名
$file_types = explode('.',$_FILES['file_stu']['name']); // 拆分文件名
$file_type = $file_types [count ( $file_types ) - 1]; // 文件类型
/*判断是否为excel文件*/
if($file_type == 'xls' || $file_type == 'xlsx'|| $file_type == 'csv'){ // 符合类型
/*上传业务*/
$upload = new \Think\Upload();
$upload->maxSize = 3145728 ;
$upload->exts = array('xls', 'csv', 'xlsx');
$upload->rootPath = './Public';
$upload->savePath = '/Excel/';
$upload->saveName = date('YmdHis');
$info = $upload->upload();
if(!$info) { // 上传错误提示错误信息
$this->error($upload->getError());
}else{ // 上传成功 // 读取文件
$filename='./Public'.$info['file_stu']['savepath'].$info['file_stu']['savename'];
import("Org.Yufan.ExcelReader");
vendor('PHPExcel.PHPExcel');
$reader = \PHPExcel_IOFactory::createReader('Excel2007'); //设置以Excel5格式(Excel97-2003工作簿)
$PHPExcel = $reader->load($filename); // 载入excel文件
$sheet = $PHPExcel->getSheet(0); // 读取第一個工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
var_dump($highestRow);
$highestColumm = $sheet->getHighestColumn(); // 取得总列数 /** 循环读取每个单元格的数据 */
$data = array();
for ($row = 2; $row <= $highestRow; $row++){//行数是以第1行开始 if($column = 'A'){
$data['name'] = $sheet->getCell($column.$row)->getValue();
}
if($column = 'B'){
$data['account'] = $sheet->getCell($column.$row)->getValue();
}
if($column = 'C'){
$data['password'] = $sheet->getCell($column.$row)->getValue();
}
M('data')->add($data);
}
$this->success('导入数据库成功',U('Excel/show'));
}
} else{ // 不符合类型业务
$this->error('不是excel文件,请重新上传...');
}
}else{
$this->error('(⊙o⊙)~没传数据就导入');
}
}
//导出
public function export(){
import("ORG.Yufan.Excel");
$list = M('data')->select();
if($list == null){
$this->error('数据库信息为空...',__APP__.'/Admin/Excel/show');
}else{
$row=array();
$row[0]=array('平台名称','帐号','密码');
$i=1;
foreach($list as $v){
$row[$i]['name'] = $v['name'];
$row[$i]['account'] = $v['account'];
$row[$i]['password'] = $v['password'];
$i++;
}
$xls = new \Excel_XML('UTF-8', false, 'datalist');
$xls->addArray($row);
$xls->generateXML(date('YmdHis'));
}
}
public function show(){
$m = M('data');
$data = $m->select();
$this->assign('data',$data);
$this->display();
}
}
视图
excelList.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Excel导入导出</title>
</head>
<body> <div class="page-header">
<h1>TP DEMO
<small>Excel导入导出练习</small>
</h1>
</div> <form method="post" action="{:U('Excel/import')}" class="form-signin" enctype="multipart/form-data" >
<input name="file_stu" type="file" class="form-control">
<button class="btn btn-lg btn-primary btn-block">导入</button>
</form>
</body>
</html>
视图
show.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表格展示</title>
</head>
<body>
<div class="page-header">
<h1>TP DEMO
<small>Excel导入导出练习</small>
</h1>
</div> <table class="table">
<tr>
<td><h4><b>平台名称</b></h4></td>
<td><h4><b>帐号</b></h4></td>
<td><h4><b>密码</b></h4></td>
</tr>
<foreach name="data" item="vo">
<tr>
<td>{$vo.name}</td>
<td>{$vo.account}</td>
<td>{$vo.password}</td>
</tr>
</foreach>
</table> <form action="{:U('Excel/export')}" class="form-signin">
<button class="btn btn-lg btn-primary btn-block">导出数据库数据</button>
</form> </body>
</html>
TP5.0 excel 导入导出的更多相关文章
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...
- Excel导入导出帮助类
/// <summary> /// Excel导入导出帮助类 /// 记得引入 NPOI /// 下载地址 http://npoi.codeplex.com/rele ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- Octopus——excel导入导出工具
Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...
- Mego(04) - NET简单实现EXCEL导入导出
前言 相信做过信息系统的朋友都会遇到EXCEL导入导出的相关开发,做过不少EXCEL导入导出后总结起来大致有如下几种方式实现: ADO.NET的OldDb或ODBC连接EXCEL使用DataTable ...
- JeeSite中Excel导入导出
在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel.CSV格式居多.如果是学习的过程中,最好是自己实现数据导入与导出的功能,然而在项目中,还是调用现成的功能比较好.近期一直使用 ...
- 土制Excel导入导出及相关问题探讨
转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...
- Java 使用 Jxl 实现 Excel 导入导出
开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的.这里做一下使用JXL的学习记录.首先需要导入相应的 ...
随机推荐
- ASP.NET Core使用静态文件、目录游览与MIME类型管理
前言 今天我们来了解了解ASP.NET Core中的静态文件的处理方式. 以前我们寄宿在IIS中的时候,很多静态文件的过滤 和相关的安全措施 都已经帮我们处理好了. ASP.NET Core则不同,因 ...
- 为clang添加中文关键字
原址: https://zhuanlan.zhihu.com/p/31158537 以clang为基础做了一个与C++.C兼容中英文关键字的编译器 swizl/cnlang 原理就是加与英文关键字等效 ...
- jquery获取select选中的值
http://blog.csdn.net/renzhenhuai/article/details/19569593 误区: 一直以为jquery获取select中option被选中的文本值,是这样写的 ...
- [转]Linux网络配置命令ifconfig输出信息解析
eth0 Link encap:Ethernet HWaddr 00:1e:4f:e9:c2:84 inet addr:128.224.163.153 Bcast:128.224.163 ...
- sql server 错误号大全
0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝访问. 6 句柄无效. 7 存储控制块被损坏. 8 存储空间不足,无法处理此 ...
- 可视化编程开发板TurnipBit支持LED亮度可调功能
微软的makecode编辑器更新至版本v0.12.64.新增LED的可调亮度功能.而作为中文版可视化编程的口袋计算机TurnipBit完全兼容micro:bit,同样支持LED的亮度可调功能. 该项功 ...
- PHP连接LDAP进行登录验证
基于安全性考虑,准备把PHP做的自动化平台加入ldap登录验证,具体做法如下: 了解背景: LDAP 的全称是"轻量级目录访问协议(Lightweight Directory Access ...
- Linux常见命令(权限)
创建a.txt和b.txt文件,将他们设为其拥有者和所在组可写入,但其他以外的人则不可写入:chmod ug+w,o-w a.txt b.txt 创建c.txt文件所有人都可以写和执行chmod a= ...
- windows错误处理
在调用windows API时函数会首先对我们传入的参数进行校验,然后执行,如果出现什么情况导致函数执行出错,有的函数可以通过返回值来判断函数是否出错,比如对于返回句柄的函数如果返回NULL 或者IN ...
- 有关求任意一个正整数的n的因数的个数的求解思路
已知条件:n=p1^a1xp2^a2xp3^a3........xpk^ak;求解n的因数的个数: 求解的主要思想:递归 设所有的因数的个数为U1: 则U1会等于什么呢? 不妨设求得p2^a2xp3^ ...