# 數據導入導出
* * * * *
經常在網上看到一些輸入導入導出操作那些代碼又長還夾雜著業務邏輯,看起來頭疼無比,下面看完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個參數為導出的文件名稱,若不傳遞則默認叫做 導出文件。
然后測試下,導出后的文件如圖

* * * * *
### 數據導入
導出封裝后的體驗如此簡單,導入其實更簡單。。
同樣來一個演示的控制器方法
~~~
/**
* 數據導入
*/
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文件。
下面是執行后的效果

哈哈,看完OneBase的導入導出是否覺得寫代碼是種享受呢 ^_^。
如果涉及到大數據量導入導出,會導致內存不足的情況。
思路:
大文件導入:大文件導入可以先上傳文件到服務器,然后通過異步計劃任務處理,一次導入一部分,分多批次導入即可。
大文件導出:大文件導出可以根據數據情況異步生成導出小文件到服務器,然后提供路徑給用戶比如通過日期生成,下載時打包到一起即可。
- 序言
- 基礎
- 安裝環境
- 安裝演示
- 規范
- 目錄
- 介紹
- 后臺介紹
- 后臺首頁
- 會員管理
- 系統管理
- 系統設置與配置管理
- 菜單管理
- 系統回收站
- 服務管理
- 插件管理
- 文章管理
- 接口管理
- 優化維護
- SEO管理
- 數據庫
- 文件清理
- 行為日志
- 執行記錄
- 統計分析
- 接口介紹
- 接口文檔
- 錯誤碼設計
- Token介紹
- 前臺介紹
- 架構
- 架構總覽
- 生命周期
- 入口文件
- 模塊設計
- 依賴注入
- 控制器架構
- 邏輯架構
- 驗證架構
- 服務架構
- 模型架構
- 行為架構
- 插件架構
- 配置
- 配置介紹
- 配置加載
- 配置擴展
- 請求
- 請求信息
- 日志
- 后臺行為日志
- 系統執行日志
- 框架日志
- 數據
- 數據庫設計
- 數據字典
- 數據庫操作
- 事務控制
- 混合操作
- 實戰
- 控制器
- 邏輯與驗證
- 視圖與模型
- 插件研發
- 服務研發
- 接口研發
- 雜項
- 數據導入導出
- 二維碼條形碼
- 郵件發送
- 云存儲服務
- 支付服務
- 短信服務
- 微信分享
- 生成海報
- 聊天室
- PJAX
- Demo
- Widget
- 附錄
- 常量參考
- 配置參考
- 函數參考
- 進階
- Redis
- 自動緩存
- 全自動緩存
- 索引
- 數據簽名
- 全自動事務
- 隊列