weixin_43356655 2022-04-13 00:20 采纳率: 83.3%
浏览 52
已结题

微信小程序 短时间内导出excel的文件都是一样的?

代码是复制网络上,很好用~但是有个bug,就是短时间内导出的excel内容是一样的,只能过几分钟才能导出想要的文件,麻烦大 神帮忙看下是哪里可以优化一下呢~

const cloud = require('wx-server-sdk')
//这里最好也初始化一下你的云开发环境
cloud.init()
//操作excel用的类库
const xlsx = require('node-xlsx');

// 云函数入口函数
exports.main = async (event, context) => {
    try {
        let {
            userdata
        } = event

        //1,定义excel表格名
        let dataCVS = 'test.xlsx'
        //2,定义存储数据的
        let alldata = [];
        let row = event.row; //表属性
        let rowValue = event.rowValue //属性的名字
        alldata.push(row);

        for (let key in userdata) {
            let arr = [];
              for(let i in rowValue){
              arr.push(userdata[key][rowValue[i]])
              }
            alldata.push(arr)
        }
        //3,把数据保存到excel里
        var buffer = await xlsx.build([{
            name: "mySheetName",
            data: alldata
        }]);
        //4,把excel文件保存到云存储里
        return await cloud.uploadFile({
            cloudPath: dataCVS,
            fileContent: buffer, //excel二进制文件
        })

    } catch (e) {
        console.error(e)
        return e
    }
}

代码是复制网络上,很好用~但是有个bug,就是短时间内导出的excel内容是一样的,只能过几分钟才能导出想要的文件,麻烦大 神帮忙看下是哪里可以优化一下呢~

  • 写回答

1条回答 默认 最新

  • amazingTU 2022-04-15 11:01
    关注

    没用过这个方法,但是帮你分析一下。1.首先,excel表格名不该写死,应该接收传入的表名。2.async ... await.... 这是一个同步操作(不懂看一下ES6),cloud.uploadFile()是异步的,所以你的保存操作需要等待这个异步操作执行完毕,但是如果未执行完毕的时候,你又操作了,那就形成了一个任务队列,他会将你的任务一个一个的执行完毕,所以就会出现你说的现象,你肯定频繁操作了。解决办法就是看看cloud.uploadFile()这个方法有没有成功回调的方法,有的话就加上一个开关,在没有成功回调的时候禁止操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 修改了问题 4月13日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 将安全信息用到以下对象时发生以下错误:c:dumpstack.log.tmp 另一个程序正在使用此文件,因此无法访问
  • ¥15 速度位置规划实现精确定位的问题
  • ¥15 代码问题:df = pd.read_excel('c:\User\18343\Desktop\wpsdata.xlxs')路径读不到
  • ¥15 为什么视频算法现在全是动作识别?
  • ¥15 编写一段matlab代码
  • ¥15 用Python做岩石类别鉴定软件
  • ¥15 关于调取、提交更新数据库记录的问题
  • ¥15 之前删了盘从下vs2022遇见这个问题 搞了一整天了
  • ¥15 从Freecad中宏下载的DesignSPHysics,出现如下问题是什么原因导致的(语言-python)
  • ¥30 notepad++ 自定义代码补全提示