背景

  • 在学习微信小程序的过程中,需要导出excel文件数据,可是却没有后台服务器,所以只能够想着使用纯前端去导出excel
  • 使用插件:excel-export

导出思想

  • 将数据封装成excel文件
  • 将excel文件上传到云存储中
  • 将云存储的excel文件以图片的格式下载到本地
  • 修改图片文件后缀为xlsx,成为excel文件

操作

  • 将数据封装成excel文件;将excel文件上传到云存储中

    • 建立云函数(我的云函数名称:uploadexportfile),打开云函数终端,安装excel-export插件
    • // 云函数入口文件
      const cloud = require('wx-server-sdk')
      const nodeExcel = require('excel-export');
      const path = require('path');
      cloud.init()// 云函数入口函数
      exports.main = async (event, context) => {var tableMap = {styleXmlFile:path.join(__dirname,"styles.xml"),name: Date.now()+"-export",cols: [],rows: [],}var tableHead = ["编号", "名称", "生日", "年龄"];//添加表头for(var i=0;i<tableHead.length;i++){tableMap.cols[tableMap.cols.length]={caption:tableHead[i],type:'string'}}//表体:伪数据const tableList = [{编号:0,名称:'张三',生日:'2019-5-1',年龄:20},{编号:1,名称:'李四',生日:'2019-5-1',年龄:45}]//添加每一行数据for(var i=0;i<tableList.length;i++){tableMap.rows[tableMap.rows.length]=[tableList[i].编号,tableList[i].名称,tableList[i].生日,tableList[i].年龄]}//保存excelResult到相应位置var excelResult = nodeExcel.execute(tableMap);var filePath = "outputExcels";var fileName = cloud.getWXContext().OPENID + "-" + Date.now()/1000 + '.xlsx';//图片上传到云存储return await cloud.uploadFile({cloudPath: path.join(filePath, fileName),fileContent: new Buffer(excelResult,'binary')}).then(res=>{console.log(res.fileID);return res;}).catch(err=>{});
      }

      DOWNLOAD

    • //导出excel
      function exportFile(dataHeader,dataList){wx.showLoading({title: '正在导出',});console.log(dataHeader);console.log(dataList);wx.cloud.callFunction({name:'uploadexportfile',data:{dataHeader:dataHeader,dataList:dataList}}).then(res=>{const fileID = res.result.fileID;//下载文件wx.cloud.downloadFile({fileID: fileID}).then(res1 => {this.saveFileToPhotosAlbum(res1);//保存文件到相册this.delCloudFile(fileID);//删除云存储文件}).catch(error => {// handle error})}).catch(err1=>{});
      }//保存文件到本地相册
      function saveFileToPhotosAlbum(res){//授权this.writePhotosAlbumAuth();// 保存文件var saveTempPath = wx.env.USER_DATA_PATH + "/exportFile"+new Date().getTime()+".jpg";wx.saveFile({tempFilePath: res.tempFilePath,filePath: saveTempPath ,success:res1=> {//获取了相册的访问权限,使用 wx.saveImageToPhotosAlbum 将图片保存到相册中wx.saveImageToPhotosAlbum({filePath: saveTempPath ,success: res2 => {//保存成功弹出提示,告知一下用户wx.hideLoading();wx.showModal({title: '文件已保存到手机相册',content: '文件位于tencent/MicroMsg/WeiXin下 \r\n将保存的文件重命名改为[ .xlsx ]后缀即可正常打开',confirmColor: '#0bc183',confirmText: '知道了',showCancel: false});},fail(err2) {console.log(err2)}})}});
      }//删除云存储文件
      function delCloudFile(fileID){const fileIDs=[];fileIDs.push(fileID);//删除云存储中的excel文件wx.cloud.deleteFile({fileList: fileIDs,success: res4 => {// handle successconsole.log(res.fileList);},fail: console.error})
      }
      //上传单个文件
      function uploadSingleFile(cloudPath,filePath){wx.cloud.uploadFile({cloudPath: cloudPath, // 上传至云端的路径filePath: filePath, // 小程序临时文件路径success: res => {// 返回文件 IDconsole.log(res.fileID)},fail: console.error})
      }//微信图片保存到本地相册授权
      function writePhotosAlbumAuth(){wx.getSetting({success(res) {if (!res.authSetting['scope.writePhotosAlbum']) {wx.authorize({scope:'scope.writePhotosAlbum',success() {console.log('授权成功')}})}}})
      }module.exports={uploadSingleFile:uploadSingleFile,exportFile:exportFile,saveFileToPhotosAlbum:saveFileToPhotosAlbum,delCloudFile:delCloudFile,writePhotosAlbumAuth:writePhotosAlbumAuth
      }

微信小程序——使用excel-export导出excel相关推荐

  1. 微信小程序/H5(UniApp)导入/导出excel文件

    微信小程序/H5本地读写excel 准备工作 JS库 本地导入并读取Excel(*.xls, *.xlsx) Excel文件示例 选取文件并获得binary数据 Binary数据转json 本地构建并 ...

  2. 微信小程序预览 word、excel、ppt、pdf 等文件

    目录 微信小程序预览 word.excel.ppt.pdf 等文件 预览效果 前言 注意点 实现代码 微信小程序预览 word.excel.ppt.pdf 等文件 预览效果 前言 微信官方提供了相关的 ...

  3. 微信小程序——利用java后台解析Excel文件的数据

    后台为java,ssm框架 1.在SpringMvc.xml文件中增加Spring文件上传的解析器 <bean id="multipartResolver"class=&qu ...

  4. 小程序按一定顺序导出excel表格

    目录 项目场景 问题描述 解决方案: 前提一:让我们每一个记录都有一个专门的rank值 前提二:编写云函数 题外话 项目场景 有时候我们需要导出数据库里面的数据,并且将它们导成xlsx的文件,数据库里 ...

  5. 微信小程序--数据库数据批量导出为excel文件,预览下载

    1.首先构建node.js云函数,安装类库 右键点击创建的云函数,在外部终端输入npm install node-xlsx下载安装 npm install node-xlsx npm install ...

  6. 微信小程序云开发数据导出为Excel下载并打开

    1.创建云函数 2.安装node-xlsx类库(node类库) 打开终端安装node-xlsx类库并重现上传部署 npm install node-xlsx 3.把数据存在excel里面,把excel ...

  7. 【微信小程序云开发】利用excel导入到云数据库时乱码

    需要将excel文件另存为CSV UTF-8格式 同样的如果要查看云数据库导出的文件,也需要转化 选择数据,获取外部数据,导入文本文件,根据提示操作

  8. 微信小程序解析并上传excel

    excel文件 第一步 文件 cloudfunctions/excel/ node_modules index.js (需要自己建立的) package-lock.json package.json ...

  9. 微信小程序实现电子签名并导出图片

    实现效果图 .wxml文件 <canvas class="canvas" id="canvas" canvas-id="canvas" ...

  10. 微信小程序云数据库的导出乱码

    第一步;导出csv格式,现在导出的是乱码; 第二步;找到你导出的csv文件,用记事本打开,点击另存为,编码选择utf-8就可以了

最新文章

  1. 【Spring】框架简介
  2. Android library module生成aar文件
  3. 51CTO论坛资料共享改版细分等您来!
  4. python每行输出8个式子_求大神用python写出算术题的式子和结果。
  5. conda安装tensorflow-gpu简洁版_笔记本的垃圾显卡也能装Tensorflow GPU版,简明教程
  6. Dynamic Rankings——带修改区间第k大
  7. 如果安装License失败的解决方案
  8. JAVA-java内存分配
  9. 最优比例生成树(0/1分数规划)
  10. 把c的char数组转换为python image的代码
  11. 利用SQL对拍拍贷数据进行逾期分析
  12. STM32 - Cube介绍
  13. 我的创作纪念日(3周年)
  14. Unity用代码写一个Inspector里面能拉动的滑条
  15. raspberry pi cm3+的i2c使用的问题调试
  16. 大数据必学语言Scala(三十一):scala面向对象 特质(trait)
  17. 下载 | 数学分析八讲(修订版)
  18. __attribute__((section(”name“)))的一些理解
  19. 浅谈chatGPT——新必应(bing)版本
  20. Ocelot一个优秀的.NET API网关框架

热门文章

  1. 用Java创建五子棋小游戏
  2. web前端CSS之“ calc() 函数”
  3. 云计算与大数据的发展
  4. Oracle中导出一条记录的SQL
  5. Perforce Reconcile Offline Work 功能——P4V修改对应目录,自动checkout, add, delete。
  6. Android_tablayout
  7. [spark] 内存管理 MemoryManager 解析
  8. 关于不能远程桌面到我的电脑的问题
  9. GL error Invalid operation:Optix7官方Demo奇怪问题解决方案
  10. sql文件太大无法导入问题的解决