我正在使用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的最大项目编号扩展到这样的高数量是不好的做法,但我无法看到任何其他方式将大型数据集从客户端发送到服务器,除非我错过了明显?