gpt4 book ai didi

excel - Office365 加载项 : inserting data into an excel sheet from a task-pane add-in

转载 作者:行者123 更新时间:2023-12-03 00:58:32 27 4
gpt4 key购买 nike

我一定错过了一些东西:

[问题]:

我有一个二维数据数组,我想将其插入到从单元格 A1 开始的当前工作表中。我还必须格式化这些数据。当前文档可能为空,也可能不是。我无法控制这个。

稍后,我需要从文档中删除数据并插入新数据。这组新数据可能具有不同的维度。

使用 Office JavaScript Api 似乎无法做到这一点。

我尝试使用 TableBindings 等进行的所有操作都失败了。在许多情况下,根据 MSDN 应该工作的功能会失败,给我一些神秘的错误消息,例如“内部错误”(代码 5001)或不支持的绑定(bind)操作(3010)。我必须使用表绑定(bind),因为根据 MSDN 文档,我无法将格式应用于其他任何内容。

以下解决方案是 Not Acceptable :

  • 强制用户使用带有预先存在的命名表的特定文档模板
  • 在我的加载项开始工作之前强制用户选择单元格“A1”。
  • 强制用户在插入数据之前选择一个范围。

从可用性的角度来看,所有这些都是噩梦般的解决方案。

可以从命名项创建一个绑定(bind),并通过计算列和行并构建像“A1:C232”这样的字符串来构建范围,但这只能工作一次,因为:

  • 我无法删除数据(是的。在使用此类命名范围创建的绑定(bind)上调用“deleteAllDataValuesAsync”会引发错误 3010(即使该绑定(bind)说它是“表”绑定(bind)......什么?)。
  • 我无法用不同大小的数据覆盖它(覆盖错误)
  • 我无法对其设置格式(是的,它是作为表绑定(bind)创建的绑定(bind),是的,我可以调用 setFormatAsync 函数,它会抛出“内部错误,5001” -> #headdesk

我希望 Microsoft 的有人读到这篇文章并能为我指明正确的方向。我真的希望!因为我开始担心这实际上是设计使然。 (在过去几周的挣扎之后,我对 Office.js 感到非常沮丧,我很难不咆哮,所以我就在这里停下来......不要让我开始使用 ui 结构)

最佳答案

借助 Office 2016 中引入的新 Excel Javascript API(很快将在 Office Online 中提供),可以轻松使用新的 Range 对象来操作工作表数据。下面的代码片段无需用户进行范围选择或任何其他操作即可运行。

var data = [
[1,2,3],
[2,6,7]
]

Excel.run(function (ctx) {
// make space for the data to be inserted
var sheet1 = ctx.workbook.worksheets.getItem("Sheet1");
var firstCell = sheet1.getCell(0,0);
var lastCell = sheet1.getCell(data.length - 1, data[0].length - 1);
var range = firstCell.getBoundingRect(lastCell).insert('down');

range.values = data; // insert data
range.format.font.bold = true;

range.delete('up'); // erase data, shift up
return ctx.sync();
}).catch(function(error) {
console.log(error);
})

在 Office JS Snippet 资源管理器中尝试一下,并查看下面链接的博客文章以获取更多信息!

https://github.com/OfficeDev/office-js-snippet-explorer

https://dev.office.com/blogs/Office-js-Public-Preview

关于excel - Office365 加载项 : inserting data into an excel sheet from a task-pane add-in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781457/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com