收藏
回答

小程序云函数导出excel超时,设置了60秒任然不够,怎么办?

具体需求是,导出excel中含有图片,这些图片是从 云存储里面下载的?循环放入excel中, 当数据超过五十多条, 并且每条有两张以上图片时就会超时60秒

// 创建工作簿
  const wb = new xl.Workbook();
  const style = wb.createStyle(myStyle);
  // 向工作簿添加一个表格
  let ws = wb.addWorksheet('Sheet1');
  
  //2,定义存储数据的
  ws.cell(11).string('序号').style(style); // A1
  ws.cell(12).string('微信昵称').style(style); // B1
  ws.cell(13).string('提交时间').style(style);
  // 接着处理表的属性
  var forms = jielong.form;
  var isSetHeight = false;
  for (let formIndex in forms) {
    let form = forms[formIndex];
    if (form.type == 2){
      ws.column(parseInt(formIndex) + 4).setWidth(50);
      isSetHeight = true;
    }
    ws.cell(1parseInt(formIndex) + 4).string(form.title).style(style);
  }
  for (var i in recordList) {
    i = parseInt(i);
    if (isSetHeight){
      ws.row(i + 2).setHeight(250);
    }
    const record = recordList[i];
    console.log("循环中record=", i, record);
    ws.cell(i + 21).number(i + 1).style(style);
    ws.cell(i + 22).string(record.nickName).style(style);
    ws.cell(i + 23).string(record.day).style(style);
    console.log("循环中record=", i, record);
    var forms = record.values;
    for (var formIndex in forms) {
      var celT = 3 + 1 + parseInt(formIndex);
      console.log("循环中celT=", celT);
      const form = forms[formIndex];
      if (form.type != 2) {
        ws.cell(i + 2, celT).string(form.value).style(style);
      } else {
        var images = form.value;
        var urlTotal;
        for (let imIndex in images) {
          var im = images[imIndex];
          urlTotal = im.url;
          console.log("图片地址:urlTotal=", urlTotal);
          let res = await cloud.downloadFile({
            fileID: urlTotal
          })
          let image = res.fileContent;
          ws.addImage({
            image: image,
            type'picture',
            position: {
              type'twoCellAnchor',
              from: {
                col: celT,
                colOff: 0,
                row: i + 2,
                rowOff: 0,
              },
              to: {
                col: parseInt(celT) + 1,
                colOff: 0,
                row: i + 3,
                rowOff: 0,
              },
            },
          });
        }
    
      }
    }


  }


回答关注问题邀请回答
收藏

2 个回答

  • 拾忆
    拾忆
    2022-05-04

    可以访问 https://cloud.tencent.com/

    通过微信扫描小程序公众号授权方式选择指定小程序登陆,然后找到cloudbase中的微信小程序对应的云开发环境,然后设置云函数的超时时间,最大可设置成900秒。

    2022-05-04
    有用 1
    回复 2
    • 无道
      无道
      2022-05-04
      谢谢大佬,我设置了更长的,但是代码也要优化下
      2022-05-04
      回复
    • 拾忆
      拾忆
      2022-05-04回复无道
      不用谢
      2022-05-04
      回复
  • 老张
    老张
    2022-05-04
    await cloud.downloadFile
    

    这里建议改成:Promise.all

    2022-05-04
    有用
    回复 2
    • 无道
      无道
      2022-05-04
      感谢大佬指点
      2022-05-04
      回复
    • 无道
      无道
      2022-05-04
      2022-05-04
      回复
登录 后发表内容