最近一直比較忙,答應你們的小程序解析excel一直沒有寫出來,今天終於忙裏偷閒,有機會把這篇文章寫出來給你們了。node
老規矩先看效果圖
效果其實很簡單,就是把excel裏的數據解析出來,而後存到雲數據庫裏。提及來很簡單。可是真的作起來的時候,發現其中要用到的東西仍是不少的。不信。。。。 那來看下流程圖數據庫流程圖
經過流程圖,我看看到咱們這裏使用了雲函數,雲存儲,雲數據庫。
流程圖主要實現下面幾個步驟npm
- 1,使用wx.chooseMessageFile選擇要解析的excel表格
- 2,經過wx.cloud.uploadFile上傳excel文件到雲存儲
- 3,雲存儲返回一個fileid 給咱們
- 4,定義一個excel雲函數
- 5,把第3步返回的fileid傳遞給excel雲函數
- 6,在excel雲函數裏解析excel,並把數據添加到雲數據庫。
因此咱們先把前5步實現了,後面重點講解下咱們的excel雲函數。小程序
這裏咱們使用到了雲開發,使用雲開發必需要先註冊一個小程序,並給本身的小程序開通雲開發功能。這個知識點我講過不少遍了,還不知道怎麼開通並使用雲開發的同窗,去翻下我前面的文章,或者看下我錄的講解視頻《5小時入門小程序雲開發》promise
我把完整的代碼貼出來給你們async
const cloud = require('wx-server-sdk') cloud.init() var xlsx = require('node-xlsx'); const db = cloud.database() exports.main = async(event, context) => { let { fileID } = event //1,經過fileID下載雲存儲裏的excel文件 const res = await cloud.downloadFile({ fileID: fileID, }) const buffer = res.fileContent const tasks = [] //用來存儲全部的添加數據操做 //2,解析excel文件裏的數據 var sheets = xlsx.parse(buffer); //獲取到全部sheets sheets.forEach(function(sheet) { console.log(sheet['name']); for (var rowId in sheet['data']) { console.log(rowId); var row = sheet['data'][rowId]; //第幾行數據 if (rowId > 0 && row) { //第一行是表格標題,全部咱們要從第2行開始讀 //3,把解析到的數據存到excelList數據表裏 const promise = db.collection('users') .add({ data: { name: row[0], //姓名 age: row[1], //年齡 address: row[2], //地址 wechat: row[3] //wechat } }) tasks.push(promise) } } }); // 等待全部數據添加完成 let result = await Promise.all(tasks).then(res => { return res }).catch(function(err) { return err }) return result }
上面代碼裏註釋的很清楚了,我這裏就不在囉嗦了。
有幾點注意的給你們說下ide
1,要先建立數據表函數
如個人表格裏有下面三條數據
點擊上傳按鈕,並選擇咱們的表格文件
上傳成功的返回以下,能夠看出咱們添加了3條數據到數據庫ui
添加成功效果圖以下.net
到這裏咱們就完整的實現了小程序上傳excel數據到數據庫的功能了。
若是你有遇到問題,能夠在底部留言,我看到後會及時解答。後面我會寫更多小程序雲開發實戰的文章出來。也會錄製本節的視頻出來,敬請關注。