[微信开发]小程序实现上传到云存储,解析Excel表并添加到云开发数据库

共有一下步骤:

一、选择Excel文件

二、上传文件到云存储

三、下载node.js并部署npm

四、在云开发里面创建一个新的空的表

五、创建并编写云函数

六、利用wx.cloud.callFunction调用我们编辑的云函数

七、测试

八、全部代码

九、过程中使用到的一些文章

扫描二维码关注公众号,回复: 15262481 查看本文章

一、选择Excel文件:

先看看我的excel:

    ①界面添加一个按钮,为按钮添加一个监听事件chooseExcel;

<button bindtap="chooseExcel">选择excel</button>

    ②chooseExcel利用wx.chooseMessageFile打开文件夹,选择Excel文件,拿到文件地址;

  //选择excel表
  chooseExcel(){
    let that = this;
    wx.chooseMessageFile({
      count: 1,
      //extension: [],
      type: 'file',
      success: (result) => {
        console.log("选择Excel表成功!",result);
        let path = result.tempFiles[0].path;
        //that.uploadExcel(path);//调用上传Excel到云存储的方法
      },
      fail: (res) => {},
      complete: (res) => {},
    })
  },

二、上传文件到云存储:

    利用wx.cloud.uploadFile以及上面的文件地址,上传Excel表到云存储,拿到云存储的数据地址;

  //上传Excel到云存储
  uploadExcel(path){
    let that = this;
    wx.cloud.uploadFile({
      cloudPath : new Date().getTime() + '.xls',
      filePath : path,
      success:function(res){
        console.log("上传Excel到云存储成功!",res);
        //that.parseExcel(res.fileID);//解析Excel表
      },
      fail:function(err){
        console.log("上传Excel到云存储失败!",err);
      }
    })
  },

三、下载node.js并部署npm:

   这里就不讲了,需要的就去下面别人写的文章的链接看看吧:

node.js和npm的安装与环境配置(2021最新版)_npm install_小绵杨Yancy的博客-CSDN博客

四、在云开发里面创建一个新的空的表:

我这里的名字叫:testExcel

五、创建并编写云函数:

①新建一个Node.js云函数

②在终端打开刚创建的云函数:

 ③输入 npm install node-xlsx 安装依赖,有进度条说明正在安装:

④等待一会儿,安装好后,在index.js中写: 

const cloud = require('wx-server-sdk')
cloud.init({
  env : cloud.DYNAMIC_CURRENT_ENV//本来这里是空的,但有时候如果老是解析失败,可能是有的电脑需要在云函数里也要初始化云开发环境
})
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 all_excel_data = [] //用来存储所有的excel数据
  //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数据表里
        all_excel_data.push({
          name: row[0],
          sex: row[1],
          age : row[2],
          city : row[3],
          number: row[4]
        })
      }
    }
  });
  // 一起添加所有数据  注意填写自己的表名!
  var result=await db.collection('testExcel').add({data:all_excel_data}).then(res=>{
    return res
  }).catch(err=>{return err})
  return result
}

同步云函数!

六、利用wx.cloud.callFunction调用我们编辑的云函数:

  //解析Excel表
  parseExcel(fileId){
    wx.cloud.callFunction({
      name : 'excel',
      data : {
        fileID : fileId
      },
      success(res){
        console.log("解析Excel表成功!",res);
      },
      fail(err){
        console.log("解析Excel表失败!",err);
      }
    })
  },

七、测试。点击按钮,选择excel进行测试:

 这里可以看到我们在res中有一个数组,然后我们再去表里看看:

成功!

八、附上全部代码:

1.wxml:

<!--pages/demo02/demo02.wxml-->
<button bindtap="chooseExcel">选择excel</button>

2.js:

// pages/demo02/demo02.js
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  //选择excel表
  chooseExcel(){
    let that = this;
    wx.chooseMessageFile({
      count: 1,
      //extension: [],
      type: 'file',
      success: (result) => {
        console.log("选择Excel表成功!",result);
        let path = result.tempFiles[0].path;
        //that.uploadExcel(path);//调用上传Excel到云存储的方法
      },
      fail: (res) => {},
      complete: (res) => {},
    })
  },

  //上传Excel到云存储
  uploadExcel(path){
    let that = this;
    wx.cloud.uploadFile({
      cloudPath : new Date().getTime() + '.xls',
      filePath : path,
      success:function(res){
        console.log("上传Excel到云存储成功!",res);
        //that.parseExcel(res.fileID);//解析Excel表
      },
      fail:function(err){
        console.log("上传Excel到云存储失败!",err);
      }
    })
  },

  //解析Excel表
  parseExcel(fileId){
    wx.cloud.callFunction({
      name : 'excel',
      data : {
        fileID : fileId
      },
      success(res){
        console.log("解析Excel表成功!",res);
      },
      fail(err){
        console.log("解析Excel表失败!",err);
      }
    })
  },
})

3.excel中的index.js:

const cloud = require('wx-server-sdk')
cloud.init({
  env : cloud.DYNAMIC_CURRENT_ENV//本来这里是空的,但有时候如果老是解析失败,可能是有的电脑需要在云函数里也要初始化云开发环境
})
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 all_excel_data = [] //用来存储所有的excel数据
  //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数据表里
        all_excel_data.push({
          name: row[0],
          sex: row[1],
          age : row[2],
          city : row[3],
          number: row[4]
        })
      }
    }
  });
  // 一起添加所有数据  注意填写自己的表名!
  var result=await db.collection('testExcel').add({data:all_excel_data}).then(res=>{
    return res
  }).catch(err=>{return err})
  return result
}

九、过程中使用到的一些文章:

1.

小程序读取excel表格数据,并存储到云数据库 | 微信开放社区

2.

node.js和npm的安装与环境配置(2021最新版)_npm install_小绵杨Yancy的博客-CSDN博客

感谢!

猜你喜欢

转载自blog.csdn.net/weixin_57788079/article/details/129931574