当前位置:   article > 正文

uniapp使用云开发做excel数据导出的坑_unicloud导出数据到excel

unicloud导出数据到excel
  1. 1、云函数下安装好依赖,开发云函数功能
  2. 2、部署云端云函数成功后,
  3. 3、体验版或者正式版需要连接云端云函数,连接本地无法使用

 云函数逻辑:

  1. // 云函数入口文件
  2. const cloud = require('wx-server-sdk')
  3. cloud.init()
  4. //操作excel用的类库
  5. const xlsx = require('node-xlsx');
  6. // 云函数入口函数
  7. exports.main = async(event, context) => {
  8. try {
  9. let { userdata } = event
  10. console.log(userdata)
  11. //1,定义excel表格名
  12. let dataCVS = new Date().getTime() + '.xlsx'
  13. //2,定义存储数据的
  14. let alldata = [];
  15. // '维修金额',
  16. let row = ['vin','车辆类型', '出险时间','理赔项类型','理赔名称','理赔金额']; //表属性
  17. alldata.push(row);
  18. function singleTypeFilter(val) {
  19. let str = "";
  20. switch (val) {
  21. case "1":
  22. str = "更换";
  23. break;
  24. case "2":
  25. str = " 维修";
  26. break;
  27. case "3":
  28. str = "材料";
  29. break;
  30. }
  31. return str;
  32. }
  33. function regFenToYuan(a) {
  34. var num = Number(a);
  35. if (!num) {
  36. //等于0
  37. return num + ".00";
  38. } else {
  39. //不等于0
  40. num = Math.round(num * 100) / 10000;
  41. num = num.toFixed(2);
  42. num += ""; //转成字符串
  43. var reg =
  44. num.indexOf(".") > -1
  45. ? /(\d{1,3})(?=(?:\d{3})+\.)/g
  46. : /(\d{1,3})(?=(?:\d{3})+$)/g; //千分符的正则
  47. console.log(num.indexOf(".") > -1);
  48. return num.replace(reg, "$1,"); //千分位格式化
  49. }
  50. }
  51. let records =userdata? userdata.records || []:[]
  52. records.forEach((item,index)=>{
  53. item.resultInfo.forEach((j,i)=>{
  54. let arr = [];
  55. arr.push(item.vin);
  56. arr.push(item.vehicleType);
  57. arr.push(item.dangerDate);
  58. arr.push(singleTypeFilter(j.dangerSingleType));
  59. arr.push(j.dangerSingleName);
  60. arr.push(regFenToYuan(j.dangerSingleMoney));
  61. alldata.push(arr)
  62. })
  63. })
  64. //3,把数据保存到excel里
  65. var buffer = await xlsx.build([{
  66. name: "(请保存)出险记录明细",
  67. data: alldata
  68. }]);
  69. //4,把excel文件保存到云存储里
  70. return await cloud.uploadFile({
  71. cloudPath: dataCVS,
  72. fileContent: buffer, //excel二进制文件
  73. })
  74. } catch (e) {
  75. console.error(e)
  76. return e
  77. }
  78. }

小程序端逻辑

serviceInfo数据结构

  1. serviceInfo: {
  2. serviceSumCount: "5",
  3. serviceSumMoney: "1838148",
  4. records: [
  5. {
  6. dangerDate: "2016-11",
  7. resultInfo: [
  8. {
  9. dangerSingleType: "2",
  10. dangerSingleName: "前保险杠(全喷)",
  11. dangerSingleMoney: "40000",
  12. },
  13. {
  14. dangerSingleType: "2",
  15. dangerSingleName: "右前叶子板(全喷)",
  16. dangerSingleMoney: "40000",
  17. },
  18. ],
  19. vin: "LG29384",
  20. vehicleType: "长城CC7150FM01轿车",
  21. serviceMoney: "80000",
  22. },
  23. ],
  24. },
  1. //获取云存储文件下载地址,这个地址有效期一天
  2. getFileUrl(fileID) {
  3. let that = this;
  4. uniCloud.getTempFileURL({
  5. fileList: [fileID],
  6. success: (res) => {
  7. // get temp file URL
  8. console.log("文件下载链接", res.fileList[0].tempFileURL);
  9. uni.downloadFile({
  10. url: res.fileList[0].tempFileURL,
  11. fail: function (err) {
  12. console.log(err);
  13. },
  14. success: function (res) {
  15. console.log(res);
  16. var filePath = res.tempFilePath;
  17. uni.openDocument({
  18. filePath: filePath,
  19. showMenu: true,
  20. success: function (res) {
  21. uni.hideLoading();
  22. console.log("打开文档成功");
  23. },
  24. });
  25. // 云函数删除云存储文件
  26. uniCloud
  27. .deleteFile({
  28. fileList: [fileID],
  29. })
  30. .then((res) => {
  31. console.log(res, "yyy");
  32. })
  33. .catch((err) => {
  34. console.log(err, "yyy2");
  35. });
  36. },
  37. });
  38. },
  39. fail: (err) => {
  40. // handle error
  41. },
  42. });
  43. },
  44. export() {
  45. uni.showLoading({
  46. title: "加载中...",
  47. });
  48. // details_demo
  49. uniCloud
  50. .callFunction({
  51. name: "getExcelInfo",
  52. data: { userdata: this.serviceInfo },
  53. })
  54. .then((res) => {
  55. console.log(res.result);
  56. this.getFileUrl(res.result.fileID);
  57. });
  58. // this.$message.info("查询成功,请注意查收结果");
  59. console.log(this.serviceInfo);
  60. },

效果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/264068
推荐阅读
相关标签
  

闽ICP备14008679号