Office-JS API:将大量表数据发送到MVC控制器

时间:2016-07-08 07:11:26

标签: json ajax asp.net-mvc office-js

我正在使用Office Javascript API在线开发Office 2016和Office 365的加载项。作为一项要求,我需要解析工作表中的所有行和列,并将其发送到服务器进行处理。我通过标准的ajax POST调用实现了这一点,将范围值解析为JSON字符串值作为二维数组。这可以工作,但只能达到一定的大小,并在单元数​​超过1.000.000时失败。但是,加载项必须支持导入超过100列数20行的表数据。

客户代码:

var table = tables.getItemAt(0);
var tableRange = table.getRange();
tableRange.load("values");
ctx.sync().then(function () {
   $.ajax({
        type: "POST",
        traditional: true,
        data: JSON.stringify({ values: tableRange.values }),
        dataType: "json",
        contentType: "application/json; charset=UTF-8",
        url: "/Import/ProcessImport",
        success: function (response) { writeInfoMessage(response.responseText); },
        error: function () { writeErrorMessage("/Import/ProcessImport Failed!") }
    });
});

服务器代码:

public async Task<ActionResult> ProcessImport(string[][] values)
{
    //TODO: Process the values data here
    var result = "Success";
    return Json(new {success = true, responseText = result});
}

我一直试图在Web.config中使用aspnet:MaxJsonDeserializerMembers值,虽然它达到了一定的限制但是当超过1.000.000单元格时它似乎失败了,无论我把这个数字设置得多高。< / p>

的Web.Config

<appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="1500000" />
</appSettings>

我也知道将Json的最大项目编号扩展到这样的高数量是不好的做法,但我无法看到任何其他方式将大型数据集从客户端发送到服务器,除非我错过了明显?

0 个答案:

没有答案