用戶
 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

掃一掃,登錄網站

小程序社區 首頁 教程 查看內容

湖人vs独行侠:小程序解析excel表格并存儲到云數據庫

湖人vs爵士季后赛 www.nbgeh.club Rolan 2019-12-4 00:52

最近一直比較忙,答應大家的小程序解析excel一直沒有寫出來,今天終于忙里偷閑,有機會把這篇文章寫出來給大家了。老規矩先看效果圖效果其實很簡單,就是把excel里的數據解析出來,然后存到云數據庫里。說起來很簡單 ...

最近一直比較忙,答應大家的湖人vs爵士季后赛解析excel一直沒有寫出來,今天終于忙里偷閑,有機會把這篇文章寫出來給大家了。

老規矩先看效果圖

效果其實很簡單,就是把excel里的數據解析出來,然后存到云數據庫里。說起來很簡單。但是真的做起來的時候,發現其中要用到的東西還是很多的。不信。。。。 那來看下流程圖

流程圖

通過流程圖,我看看到我們這里使用了云函數,云存儲,云數據庫。 
流程圖主要實現下面幾個步驟

1,使用wx.chooseMessageFile選擇要解析的excel表格 
2,通過wx.cloud.uploadFile上傳excel文件到云存儲 
3,云存儲返回一個fileid 給我們 
4,定義一個excel云函數 
5,把第3步返回的fileid傳遞給excel云函數 
6,在excel云函數里解析excel,并把數據添加到云數據庫。 
可以看到最神秘,最重要的就是我們的excel云函數。 
所以我們先把前5步實現了,后面重點講解下我們的excel云函數。

一,選擇并上傳excel表格文件到云存儲

這里我們使用到了云開發,使用云開發必須要先注冊一個小程序,并給自己的小程序開通云開發功能。這個知識點我講過很多遍了,還不知道怎么開通并使用云開發的同學,去翻下我前面的文章,或者看下我錄的講解視頻《5小時入門小程序云開發》

1,先定義我們的頁面 
頁面很簡單,就是一個按鈕如下圖,點擊按鈕時調用chooseExcel方法,選擇excel

對應的wxml代碼如下

2,編寫文件選擇和文件上傳方法

上圖的chooseExcel就是我們的excel文件選擇方法。 
uploadExcel就是我們的文件上傳方法,上傳成功以后會返回一個fildID。我們把fildID傳遞給我們的jiexi方法,jiexi方法如下

3 把fildID傳遞給云函數

二,解下來就是定義我們的云函數了。

1,首先我們要新建云函數

如果你還不知道如何新建云函數,可以翻看下我之前寫的文章,也可以看我錄的視頻《5小時入門小程序云開發》 
如下圖所示的excel就是我們創建的云函數

2,安裝node-xlsx依賴庫

如上圖所示,右鍵excel,然后點擊在終端中打開。 打開終端后, 
輸入 npm install node-xlsx 安裝依賴??梢鑰吹較巒及滄爸械慕忍?/p>

這一步需要你電腦上安裝過node.js并配置npm命令。 
3,安裝node-xlsx依賴庫完成

三,編寫云函數

我把完整的代碼貼出來給大家

  1. const cloud = require('wx-server-sdk')
  2. cloud.init()
  3. var xlsx = require('node-xlsx');
  4. const db = cloud.database()
  5. exports.main = async(event, context) => {
  6. let {
  7. fileID
  8. } = event
  9. //1,通過fileID下載云存儲里的excel文件
  10. const res = await cloud.downloadFile({
  11. fileID: fileID,
  12. })
  13. const buffer = res.fileContent
  14. const tasks = [] //用來存儲所有的添加數據操作
  15. //2,解析excel文件里的數據
  16. var sheets = xlsx.parse(buffer); //獲取到所有sheets
  17. sheets.forEach(function(sheet) {
  18. console.log(sheet['name']);
  19. for (var rowId in sheet['data']) {
  20. console.log(rowId);
  21. var row = sheet['data'][rowId]; //第幾行數據
  22. if (rowId > 0 && row) { //第一行是表格標題,所有我們要從第2行開始讀
  23. //3,把解析到的數據存到excelList數據表里
  24. const promise = db.collection('users')
  25. .add({
  26. data: {
  27. name: row[0], //姓名
  28. age: row[1], //年齡
  29. address: row[2], //地址
  30. wechat: row[3] //wechat
  31. }
  32. })
  33. tasks.push(promise)
  34. }
  35. }
  36. });
  37. // 等待所有數據添加完成
  38. let result = await Promise.all(tasks).then(res => {
  39. return res
  40. }).catch(function(err) {
  41. return err
  42. })
  43. return result
  44. }

上面代碼里注釋的很清楚了,我這里就不在啰嗦了。 
有幾點注意的給大家說下

1,要先創建數據表

2,有時候如果老是解析失敗,可能是有的電腦需要在云函數里也要初始化云開發環境

四,解析并上傳成功 
如我的表格里有下面三條數據

點擊上傳按鈕,并選擇我們的表格文件

上傳成功的返回如下,可以看出我們添加了3條數據到數據庫

添加成功效果圖如下

到這里我們就完整的實現了小程序上傳excel數據到數據庫的功能了。

再來帶大家看下流程圖

如果你有遇到問題,可以在底部留言,我看到后會及時解答。后面我會寫更多小程序云開發實戰的文章出來。也會錄制本節的視頻出來,敬請關注。

分享至 : QQ空間
收藏
原作者: 編程小石頭 來自: 簡書