小程序讀取excel表格數據,並存儲到雲數據庫

最近一直比較忙,答應大家的小程序解析excel一直沒有寫出來,今天終於忙裏偷閒,有機會把這篇文章寫出來給大家了。

老規矩先看效果圖

小程序讀取excel表格數據,並存儲到雲數據庫
效果其實很簡單,就是把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
    小程序讀取excel表格數據,並存儲到雲數據庫
    對應的wxml代碼如下
    小程序讀取excel表格數據,並存儲到雲數據庫
  • 2,編寫文件選擇和文件上傳方法
    小程序讀取excel表格數據,並存儲到雲數據庫
    上圖的chooseExcel就是我們的excel文件選擇方法。
    uploadExcel就是我們的文件上傳方法,上傳成功以後會返回一個fildID。我們把fildID傳遞給我們的jiexi方法,jiexi方法如下
  • 3 把fildID傳遞給雲函數
    小程序讀取excel表格數據,並存儲到雲數據庫

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

  • 1,首先我們要新建雲函數
    小程序讀取excel表格數據,並存儲到雲數據庫
    如果你還不知道如何新建雲函數,可以翻看下我之前寫的文章,也可以看我錄的視頻《5小時入門小程序雲開發》
    如下圖所示的excel就是我們創建的雲函數
    小程序讀取excel表格數據,並存儲到雲數據庫
  • 2,安裝node-xlsx依賴庫
    小程序讀取excel表格數據,並存儲到雲數據庫
    如上圖所示,右鍵excel,然後點擊在終端中打開。 打開終端後,
    輸入 npm install node-xlsx 安裝依賴。可以看到下圖安裝中的進度條
    小程序讀取excel表格數據,並存儲到雲數據庫
    這一步需要你電腦上安裝過node.js並配置npm命令。
  • 3,安裝node-xlsx依賴庫完成
    小程序讀取excel表格數據,並存儲到雲數據庫

三,編寫雲函數

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

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
}

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

  • 1,要先創建數據表
    image.png

  • 2,有時候如果老是解析失敗,可能是有的電腦需要在雲函數裏也要初始化雲開發環境
    小程序讀取excel表格數據,並存儲到雲數據庫

四,解析並上傳成功

如我的表格裏有下面三條數據
小程序讀取excel表格數據,並存儲到雲數據庫
點擊上傳按鈕,並選擇我們的表格文件
小程序讀取excel表格數據,並存儲到雲數據庫
上傳成功的返回如下,可以看出我們添加了3條數據到數據庫
小程序讀取excel表格數據,並存儲到雲數據庫

添加成功效果圖如下
小程序讀取excel表格數據,並存儲到雲數據庫

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

再來帶大家看下流程圖

小程序讀取excel表格數據,並存儲到雲數據庫

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章