我用microsofts JavaScript API创建了一个excel任务窗格应用程序。我创建了一个绑定到包含一些数据的 excel 工作表。
像这样:
Column1 | Column2
Value1 | Value2
Value1 | Value1
Value2 | Value3
我的应用程序为每列创建了一个图表(带有dc.js
)。然后,用户可以使用图表进行筛选,以便应用可以将筛选的数据写入绑定。
在较小的绑定范围内,一切都可以正常工作。当我将绑定范围增加到大约 1500 行和 3 列时,他不会更新绑定数据。Excel不会向我显示一些错误,它什么都不做。
这是我代码的简化版本:
createBinding({ id, callback = ()=>{}, type = 'matrix' }) {
Office.context.document.bindings.addFromSelectionAsync(type, {id}, callback);
}
// options = { coercionType: "matrix" }
setBindingData({ id, data, options, callback }) {
Office.select(`bindings#${id}`).setDataAsync(data, options, callback);
}
我认为问题是所有数据的最大大小。但是我想知道最大尺寸是多少?我在堆栈溢出或Microsoft文档中找不到一些东西。
这可能是因为 O365 不允许任何单个操作将应用挂起超过 5 秒。尝试使用异步调用。
我也对这个问题感兴趣,所以进行了一些测试,空单元格和数据之间似乎存在巨大差异。 我可以绑定和读取近400万个空白单元格的数据。 但是当我添加一些简单的数据时,结果是大约90,000个细胞。 装订的形状似乎并不重要,无论是高还是宽。 所以我怀疑你的细胞里的数据可能比我的测试数据多得多。
您也许可以使用 documentselectionchanged 处理程序来解决某些问题。 例如,循环遍历行,并在更改时获取数据。
有关详细信息,请参阅 http://microsoft-office-add-ins.com。