# 数据导入导出
* * * * *
经常在网上看到一些输入导入导出操作那些代码又长还夹杂着业务逻辑,看起来头疼无比,下面看完OneBase的导入导出相信体验非常棒,这里先来讲解导出。
* * * * *
### 数据导出
作者在Demo控制器写了一个方法便于引用业务逻辑层达到演示目的,代码如下
~~~
/**
* 数据导出
*/
public function demoDataExport() { $this->logicDemo->demoDataExport(); }
~~~
这样就可以测试执行进入逻辑层了,下面是逻辑代码
~~~
/**
* 数据导出
*/
public function demoDataExport()
{
$list = $this->modelMember->getList([], true, 'id', false);
$titles = "昵称,用户名,邮箱,注册时间";
$keys = "nickname,username,email,create_time";
export_excel($titles, $keys, $list, '会员列表');
}
~~~
逻辑层也是如此的优雅,OneBase的导出就这么简单,将导出处理封装了一个通用的函数。
demoDataExport 方法的第一行为了演示导出就随便查询了个会员表数据,下方两行则是 定义导出的列标题名称与数据表列名称,然后将标题数组,列名数组,查询数据 传入函数 export_excel 即可,第4个参数为导出的文件名称,若不传递则默认叫做 导出文件。
然后测试下,导出后的文件如图
![](https://box.kancloud.cn/0200a39fa971c923edcbcdb446f5f7c3_828x141.jpg)
* * * * *
### 数据导入
导出封装后的体验如此简单,导入其实更简单。。
同样来一个演示的控制器方法
~~~
/**
* 数据导入
*/
public function demoDataImport() { $this->logicDemo->demoDataImport(); }
~~~
然后来到业务逻辑层
~~~
/**
* 数据导入
*/
public function demoDataImport($test_url = 'F:\\test.xlsx')
{
$data = get_excel_data($test_url);
dump($data);
// 此处已经将表格中的数据保存到$data数组中,后续根据自己的业务逻辑将数据写入某表
}
~~~
其实就是一行代码,get_excel_data($test_url),为了方便演示作者将刚才导出的会员信息表格改了个名字叫test放在了F盘,所以这里演示导入的$test_url就是F盘下的test.xlsx文件。
下面是执行后的效果
![](https://box.kancloud.cn/c56ad66b7383b44eae55d1ff39ccca7e_729x393.jpg)
哈哈,看完OneBase的导入导出是否觉得写代码是种享受呢 ^_^。
如果涉及到大数据量导入导出,会导致内存不足的情况。
思路:
大文件导入:大文件导入可以先上传文件到服务器,然后通过异步计划任务处理,一次导入一部分,分多批次导入即可。
大文件导出:大文件导出可以根据数据情况异步生成导出小文件到服务器,然后提供路径给用户比如通过日期生成,下载时打包到一起即可。
- 序言
- 基础
- 安装环境
- 安装演示
- 规范
- 目录
- 介绍
- 后台介绍
- 后台首页
- 会员管理
- 系统管理
- 系统设置与配置管理
- 菜单管理
- 系统回收站
- 服务管理
- 插件管理
- 文章管理
- 接口管理
- 优化维护
- SEO管理
- 数据库
- 文件清理
- 行为日志
- 执行记录
- 统计分析
- 接口介绍
- 接口文档
- 错误码设计
- Token介绍
- 前台介绍
- 架构
- 架构总览
- 生命周期
- 入口文件
- 模块设计
- 依赖注入
- 控制器架构
- 逻辑架构
- 验证架构
- 服务架构
- 模型架构
- 行为架构
- 插件架构
- 配置
- 配置介绍
- 配置加载
- 配置扩展
- 请求
- 请求信息
- 日志
- 后台行为日志
- 系统执行日志
- 框架日志
- 数据
- 数据库设计
- 数据字典
- 数据库操作
- 事务控制
- 混合操作
- 实战
- 控制器
- 逻辑与验证
- 视图与模型
- 插件研发
- 服务研发
- 接口研发
- 杂项
- 数据导入导出
- 二维码条形码
- 邮件发送
- 云存储服务
- 支付服务
- 短信服务
- 微信分享
- 生成海报
- 聊天室
- PJAX
- Demo
- Widget
- 附录
- 常量参考
- 配置参考
- 函数参考
- 进阶
- Redis
- 自动缓存
- 全自动缓存
- 索引
- 数据签名
- 全自动事务
- 队列