GitHub Demo 地址: jh-weapp-demo 实现一些常用效果、封装通用组件和工具类

小程序码

excel数据量比较大时,导入时数据会丢失,可先把数据处理好返回本地,在本地循环插入

excel格式:

###首先新建 handleExcel 云函数

安装 node-xlsx

npm install node-xlsx

然后处理数据 插入数据库

云函数 代码:

const cloud = require('wx-server-sdk')
cloud.init({// API 调用都保持和云函数当前所在环境一致env: cloud.DYNAMIC_CURRENT_ENV
})
var xlsx = require('node-xlsx');
const db = cloud.database()
const _ = db.command
const $ = db.command.aggregateexports.main = async (event, context) => {function removeSpaces(String) {var arr = []for (var i in String) {if (String[i] != ' ') {arr += String[i]}}return arr}function getRandomCode(length) {if (length > 0) {var data = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];var nums = "";for (var i = 0; i < length; i++) {var r = parseInt(Math.random() * 61);nums += data[r];}return nums;} else {return false;}}function genID(length) {// 13return (getRandomCode(length - 13) + new Date().getTime());}let fatherId = genID(32)//把 "2019-05-20 00:00:00" 转成 时间戳  2020/7/28 13:00:00function Jh_convertTimeStamp(time) {//用正则主要是把“2019-05-20 00:00:00”转换成“2019/05/20 00:00:00”兼容ioslet newTime = time.replace(/-/g, '/');return Date.parse(time)}// 时间戳转年月日时分秒 2020/06/30 13:34:00function Jh_timestampToYMDHMS(timestamp) {timestamp = new Date(timestamp);var temp = '/'var date = new Date(Date.parse(timestamp));var YY = date.getFullYear() + temp;var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + temp;var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());return YY + MM + DD + " " + hh + mm + ss;}/* excel 时间转换  (云函数只返回中国标准时间,再使用时间戳转换)* num 44044.7673611111(2020/8/1 18:25:00)* return  2020/08/01 18:25:00*/function Jh_excelDateToYMDHMS(num,isCloudFun) {var utc_days = Math.floor(num - 25569);var utc_value = utc_days * 86400;var date_info = new Date(utc_value * 1000);var fractional_day = num - Math.floor(num) + 0.0000001;var total_seconds = Math.floor(86400 * fractional_day);var seconds = total_seconds % 60;total_seconds -= seconds;var hours = Math.floor(total_seconds / (60 * 60));var minutes = Math.floor(total_seconds / 60) % 60;//中国标准时间var time = new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds);// console.log(time); Sat Aug 01 2020 18:25:00 GMT+0800 (中国标准时间)return time//云函数中 中国标准时间转换 不加 8 * 3600 * 1000 ,加了时间不正确// var dateStr = new Date(time).toJSON();// // var date = new Date(+new Date(dateStr) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')// var date = new Date(+new Date(dateStr)).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')// var newTime = date.replace(/-/g, '/');// return newTime}// 1,通过fileID下载云存储里的excel文件const res = await cloud.downloadFile({// fileID: fileID,fileID: event.fileID,})const buffer = res.fileContentconst tasks = [] //用来存储所有的添加数据操作//2,解析excel文件里的数据var sheets = xlsx.parse(buffer); //获取到所有sheetsfor (let index = 0; index < sheets.length; index++) {let sheet = sheets[index]let sheetName = sheet['name']//sheet1if (index == 0) {let rowArr = sheet['data']if (rowArr.length < 0) {return null;} else {//循环添加for (let j = 1; j < rowArr.length; j++) {row = rowArr[j];let tempDic = {}//var time = Jh_excelDateToYMDHMS(row[3])var newTime= Jh_timestampToYMDHMS(time)tempDic['AB_Year'] = row[0].toString()tempDic['AB_Month'] = row[1] < 10 ? ('0' + row[1]) : row[1].toString()tempDic['AB_Day'] = row[2] < 10 ? ('0' + row[2]) : row[2].toString()tempDic['AB_YMD'] = tempDic['AB_Year'] + tempDic['AB_Month'] + tempDic['AB_Day']tempDic['AB_Date'] = newTimetempDic['AB_SortDate'] = time// tasks.push(tempDic)//3,把解析到的数据存到数据表里const promise = db.collection('TableName').add({data: {AB_Date: tempDic['AB_Date'],AB_SortDate: tempDic['AB_SortDate'],AB_YMD: tempDic['AB_YMD'],AB_Year: tempDic['AB_Year'],AB_Month: tempDic['AB_Month'],AB_Day: tempDic['AB_Day'],}})tasks.push(promise)}}}}// 等待所有数据添加完成let result = await Promise.all(tasks).then(res => {return res}).catch(function (err) {return err})return result
}

调用 代码:


//选择excel文件
function chooseExcelFile() {return new Promise((resolve, reject) => {wx.chooseMessageFile({count: 1,type: 'file',success(res) {// console.log('选择文件成功!',res)let name = res.tempFiles[0].namelet path = res.tempFiles[0].pathwx.showLoading({title: "正在上传...",})wx.cloud.uploadFile({// cloudPath: new Date().getTime() + '.xls',cloudPath: 'res/'+ name,filePath: path, //文件路径success(res) {console.log("excel上传成功:", res.fileID)wx.hideLoading()wx.showLoading({title: "正在导入数据...",})//导入处理数据wx.cloud.callFunction({"name": "handleExcel",data: {fileID: res.fileID,},success(res) {console.log("excel导入成功:", res)wx.hideLoading()wx.showToast({title: '数据导入成功',})return resolve(true)},fail(res) {console.log("excel导入失败:", res)wx.hideLoading()wx.showToast({title: '数据导入失败,请重试',icon: 'none'})return resolve(false)}})},fail(err) {console.log("excel上传失败:", err)wx.hideLoading()wx.showToast({title: 'excel上传失败',icon: 'none'})return resolve(false)}})}})})
}

微信小程序 - excel通过云函数导入云数据库相关推荐

  1. 云开发(微信-小程序)笔记(五)----云函数,就这(上)

    云开发(微信-小程序)笔记(四)---- 还有吗?再来点 云函数 云函数即在云端(服务器端)运行的函数.在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源:各云函数完全独立 ...

  2. 微信小程序开发工具结合腾讯云开发AI人脸识别和身份证识别——基于腾讯云开发者实验项目

    微信小程序开发工具结合腾讯云开发AI人脸识别和身份证识别--基于腾讯云开发者实验项目 开通腾讯云相关权限(AI人脸识别,文字识别-身份证识别) 查看API密钥 部署微信小程序 成功演示 代码包 开通腾 ...

  3. 微信小程序Excel生成下载浏览分享

    微信小程序Excel生成下载浏览分享 完整流程 遇到的小问题 完整流程 主要是为了实现小程序前端从后端下载excel文件并浏览和分享excel文件给其他用户 主要实现步骤:通过后端返回的字节流 : w ...

  4. 微信小程序中播放海康萤石云HLS '.m3u8'视频 video标签

    微信小程序中播放海康萤石云HLS '.m3u8'视频 video标签 前言 萤石云开放平台 微信开发者工具 前言 因为项目需要在微信小程序上展示实时视频流信息,以下内容是我将萤石云平台官方文档和自己实 ...

  5. 微信小程序使用MQTT远程控制单片机——阿里云物联网平台

    微信小程序使用MQTT远程控制单片机--阿里云物联网平台① 阿里云物联网平台的使用 第一,注册阿里云 第二,找到找到物联网平台并创建设备 MQTT协议格式的讲解 MQTT中文文档 固定报头 Fixed ...

  6. 微信小程序:修复采集接口版云开发表情包

    大家好,相信很多人对这个界面的表情包小程序肯定不陌生吧 不错之前该款小程序是属于独立后端的,不管今天所发的这款是云开发的哟 运营着这个表情包的用户应该发现了,最近很多表情包图片都失效了 所以呢,今天小 ...

  7. 微信小程序开发15 项目实战 基于云开发开发一个在线商城小程序

    在学完前 4 个模块之后,我相信你会对微信小程序的开发有一个全新的认识.在前面 3 个模块中,俊鹏分别从微信小程序内在的运行原理,小程序工程化开发以及具体实践层面,深度讲解了微信小程序开发所必要的知识 ...

  8. springboot 获取登录浏览器_java项目部署到linux服务器,微信小程序后台springboot项目部署到云服务器(图文详解)...

    前面给大家讲了一个点餐系统的开发,包括java点餐后台和微信点餐小程序.可是都是教大家如何在本地把项目跑起来.今天就来教大家如何把这个点餐系统部署到服务器,实现商用. 传送门 点餐系统的开发,java ...

  9. 微信小程序/网站 上传图片到腾讯云COS

    COS简介: 腾讯云提供的一种对象存储服务,供开发者存储海量文件的分布式存储服务.可以将自己开发的应用的存储部分全部接入COS的存储桶中,有效减少应用服务器的带宽消耗等.个人也可以通过腾讯云账号免费使 ...

  10. 微信小程序---表格的制作并展示云数据库中的数据

    微信小程序并没有表格组件,可能是官方考虑到,在前端开发中,表格的嵌套性太多,用DIV代码会比较简洁就没有实现吧.没有现成的组件可以使用,针对这个问题,目前有两种解决方案: 1)内嵌 h5页面,(毕竟 ...

最新文章

  1. c#打开数据库连接池的工作机制_数据库连接池-tomcat-jdbc使用笔记
  2. android studio 库项目管理,在Android Studio中将现有项目转换为库项目
  3. Android源码下载总结
  4. ExecuteNonQuery返回值问题
  5. 莫比乌斯函数+莫比乌斯反演
  6. 启动linux的rpc服务的命令
  7. MTK 驱动开发(35)---待机功耗分析流程
  8. javamail 超时_为什么JavaMail连接超时过长
  9. 67 Ways to Increase Conversion with Cognitive Biases
  10. Palantir分析:「商业模式画布」、「SWOT」、「垄断特征」、以及「7个商业模式」
  11. 华为畅享z和荣耀x10哪个好?
  12. 对话MVP | 清华博士马福辰:希望成为社区和生态发展强有力的“助攻”
  13. 1.1 win10下wget的安装
  14. 工具|Python常用小脚本
  15. 四个收敛的关系:一致收敛,点态收敛,绝对收敛,条件收敛
  16. 超详细的bat脚本常用命令及亲测示例
  17. 【随手记】有趣的面试题 —三人三鬼过河
  18. 计算机中心那些事(四),计算机软考的那些事儿!
  19. 再回首2014的精彩
  20. 现成的MP4地址分享

热门文章

  1. unity 刷新layout_【Unity源码学习】Layout
  2. python综合程序设计——做一个可视化大屏
  3. h5 php 拍照上传图片,H5拍照、选择图片上传组件核心
  4. 计算机网络---网络层
  5. Oracle数据库:oracle内连接inner join on,多表查询各种自链接、内连接、外连接的练习示例
  6. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化
  7. Excel批量插入多个空行-VBA实现
  8. Information Communication Technology,简称ICT
  9. let和expr的区别
  10. MBA都包括哪些课程?有哪些MBA专业书籍值得推荐?