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

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

老規矩先看效果圖

小程序讀取excel表格數據,並存儲到雲數據庫
效果其實很簡單,就是把excel裏的數據解析出來,而後存到雲數據庫裏。提及來很簡單。可是真的作起來的時候,發現其中要用到的東西仍是不少的。不信。。。。 那來看下流程圖數據庫

流程圖

小程序讀取excel表格數據,並存儲到雲數據庫
經過流程圖,我看看到咱們這裏使用了雲函數,雲存儲,雲數據庫。
流程圖主要實現下面幾個步驟npm

  • 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小時入門小程序雲開發》promise

  • 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表格數據,並存儲到雲數據庫

三,編寫雲函數

我把完整的代碼貼出來給你們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,要先建立數據表
    image.png函數

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

四,解析並上傳成功

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

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

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

再來帶你們看下流程圖

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

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

相關文章
相關標籤/搜索