【问题标题】:How to fill partially Excel table from Javascript task pane application如何从 Javascript 任务窗格应用程序中填充部分 Excel 表格
【发布时间】:2016-04-06 12:59:24
【问题描述】:

我有一个 Excel 表格,其中包含 7 列数据和 6 个计算列。该表与 3 个图表相连。

任务窗格加载项用于获取一些参数,实现一些安全性(Bearer Token)并获取数据。查询为不同的参数返回不同的行数。

因此,我不能使用范围而必须使用Office.TableData

this 这样的示例上,表每次都被破坏并再次创建,我无法使用,因为 Excel 工作簿用作模板,我不知道该表有什么连接。

使用绑定和TableData 可以使用不同数量的行,但不能部分更新数据。

这些是我尝试过但没有成功的方法:addFromNamedItemAsyncdeleteAllDataValuesAsyncaddRowsAsyncsetSelectedDataAsync

我认为,这应该是可能的,因为 Excel 工作簿查询的工作方式。但是我该如何解决呢?

【问题讨论】:

    标签: ms-office excel-2013 office-addins office-js javascript-api-for-office


    【解决方案1】:

    虽然我没有回答您的问题,但如果您找不到与 office-add-in 相关的问题的答案,您应该在社交 msdn 论坛上提问。我从那里得到了答案。您可以查看我提出的与 office-add-in 相关的问题

    【讨论】:

    • 好的,我做到了。为什么我在这里问?当您继续"Office Dev Center" 并点击“与我们联系”时,您将被重定向到“stackoverflow.com/questions/tagged/ms-office
    • 我在 msdn 论坛中的 question。准备好后,我会在此处发布回复。
    • 是的,您在正确的位置发布了您的问题,并且我可以看到您正在接近您的答案。
    【解决方案2】:

    查看最新版本的 Excel JavaScript API(在 Office 2016 和 Office365 中可用),它有更多用于表格的方法:https://dev.office.com/reference/add-ins/excel/table

    在表格上,您可以获取范围,然后使用偏移量获取单元格,例如: var range = table.getRange().getCell(1,1); 还有 TableRowCollection 允许您检索特定行,如果您需要获取特定子范围,您可以使用 getCellgetCellgetIntersection 的组合来获取它的子集。

    【讨论】:

    • 我不想获取数据,而是将数据放入具有动态行数(表增长/收缩)的表中。
    • @Mottor 在这种情况下,您可以使用TableRowCollection.Add(...) 方法,该方法将允许您添加行,或者如果您需要获取某一行,从 TableRowCollection 中检索它并修改它的值或使用 TableRow.delete() 删除该单独的行。
    • 这如何解决计算列的问题?
    • @Motor 添加行后,您可以获得该行的范围 (TableRow.getRange()) 并更新公式(使用 Range.FormulasRange.FormulasR1C1 以便您可以设置您需要在其中计算值的新行的列的公式。
    • 我当然知道。问题是这是常见的场景,应该可以实现自动化。 Power Query 做到了(没有增长)。用 C++(作为 Microsoft API)编写它会比用 Javascript 更快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多