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的学习记录.首先需要导入相应的 ...
随机推荐
- 全国交通咨询系统 by C++ on Linux
信息存储 利用邻接表存储城市信息与线路信息,比邻接矩阵更加高效. 主要数据结构 I)Time,规范时间的输入输出格式 II)VNode,头结点,用于建立顶点表,存储城市信息 III)ArcNode,表 ...
- Android 7.1 ActivityManagerService 屏幕旋转流程分析 (四)
四.Activity的更新(旋转) sendNewConfiguration()会调用到ActivityManagerService的updateConfiguration()来update Conf ...
- 阿里云服务器 ubuntu14.04 配置ftp
1.执行apt-get update 2.使用apt-get命令安装vsftp:apt-get install vsftpd -y 3.先检查一下nologin的位置,通常在/usr/sbin/nol ...
- 图解JQUERY尺寸及位置定义
最近在学习JQUERY的一些应用,接触到了JQUERY对于元素尺寸及位置定义,还有就是配合浏览器尺 寸及状态的计算所做出的一些动画特效.其实像这类JQUERY应用无外乎涉及这些属性的调用:innerH ...
- WPF-控件(1)
小记:最近公司使用WPF开发一款新的产品,从零基础开始学习WPF,在看书的过程中,有些内容需要规整到一起,最终选择了博客园,希望对自己所掌握的知识有所规整. --------------------- ...
- Django__WSGI
WEB应用的本质 : 1. 浏览器发送一个http请求 2. 服务器收到请求,生成一个html文档 3. 服务器把HTML文档作为HTTP响应的body发送给浏览器 4. 浏览器收到http响应,从h ...
- PHP使用ueditor上传配置
引入 按照ueditor官网demo, 引入好ueditor之后, 默认是不能进行上传操作的 在上传时,在上传时会有如下图提示 配置上传 在editor/php目录下,有一个config.json文件 ...
- Lucene.net(4.8.0) 学习问题记录二: 分词器Analyzer中的TokenStream和AttributeSource
前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...
- GUI—ST_emWin移植
GUI-ST_emWin移植 一.st_emwin移植 1.stemwin源文件下载:ST官网 https://my.st.com/content/my_st_com/en/search.html#q ...
- Hadoop2.9.0安装
参考 https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html 1.下载并解 ...