通过Ajax请求发送OfficeJS 2D数组

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (82)

我试图在OfficeJS中发送一个大表:

function send_data() {
    return Excel.run( function(context) {
    var data = context.workbook.worksheets.getItem("SheetName")
                      .getRange("A1:K3673").load("values");

    return context.sync().then( function() {
        $.ajax({
           type: "GET",
           url: mysite,
           data: {"accessData": data.values},

         }).done( function(success) {
            $("body").append("All Done");

         }).fail( function(error) {
            $("body").append("Error == " + JSON.stringify(error));
         });

         return context.sync();
    });
    });
}

然而,我不知道如何发送这个,在背面我有一个烧瓶服务器捕捉请求,并希望我可以使用,pandas.read_json但无论我怎么试着发送这个我得到不同的错误。以下是打印flask.request时间data.values[0][0]

CombinedMultiDict([ImmutableMultiDict([('update_date', '43191'), ('accessData', 'Channel')]), ImmutableMultiDict([])])

当我尝试data.values[0]获得价值清单时,这正是我所期望的

CombinedMultiDict([ImmutableMultiDict([('update_date', '43191'), ('accessData[]', 'Channel'), ... <All my column headers>, ImmutableMultiDict([])])

但是当我尝试发送2D数组时,只是data.valuesajax.fail以下位置收到错误消息:

Error == {"readyState":0,"status":0,"statusText":"error"}

我也试过JSON.stringify(data.values)并得到了相同的错误信息:

Error == {"readyState":0,"status":0,"statusText":"error"}

我甚至尝试采取每列,并将其转换为某种列表作为嵌套键内,accessData但我得到相同的错误信息。

提问于
用户回答回答于

理想情况下,你应该将ajax调用部分中的获取数据从Excel部分中分离出来。现在,这两者交织在一起,这使得调试变得更加困难,并且在概念上更不清洁。

对于Excel部分,你应该能够:

function getExcelData(){ return Excel.run( function(context) { var data = context.workbook.worksheets.getItem("SheetName") .getRange("A1:K3673").load("values"); return context.sync() .then(function() { return data.values; }); }) }

这将释放你然后做:

getExcelData().then(function(values) { $.ajax(...) });

请注意,range.values只返回一个普通的2D数组,没有什么特别的。因此,你可以独立于Excel调用尝试你的ajax调用。

扫码关注云+社区

领取腾讯云代金券