Ms office Office js:在Excel中插入新列,并用新数据部分填充

Ms office Office js:在Excel中插入新列,并用新数据部分填充,ms-office,office-js,excel-2016,Ms Office,Office Js,Excel 2016,尽管我很兴奋,但我似乎很难让它执行最基本的excel操作,而且在api上找到答案的成功率非常有限 无论如何,我怎样才能在excel中插入一个新列并用数据部分填充它? 我有点像: Excel.run(async (ctx) => { let sheet = ctx.workbook.worksheets.getItem("Sheet1"); let range = sheet.getRange("C4:C5").insert('right'); range.valu

尽管我很兴奋,但我似乎很难让它执行最基本的excel操作,而且在api上找到答案的成功率非常有限

无论如何,我怎样才能在excel中插入一个新列并用数据部分填充它?

我有点像:

Excel.run(async (ctx) => { 
    let sheet = ctx.workbook.worksheets.getItem("Sheet1");
    let range = sheet.getRange("C4:C5").insert('right');
    range.values = [["foo"],["bar"]];
    await ctx.sync();   
}).catch(function (error) {
    console.log(error);
});
  ...
  sheet = ctx.workbook.worksheets.getItem("Sheet1");
  sheet.getRange("C:C").insert('right'); 
  await ctx.sync();

  let range = sheet.getRange("C4:C7");
  range.values = [["foo"],["bar"]];
  await ctx.sync();
  ...
但这段代码的问题在于,它将新数据插入到我想要的地方,即C列的右侧,但它不是创建新列,而是移动到所有其他列中的数据上,但只移动到第4-5行,这会弄乱我的电子表格/表格的其余部分

相反,我想首先在C的右边插入一个新列,然后在这个新列中,给它分配一个值数组来部分填充它。谢谢


编辑:
这就是我得到的:

 _______________________
|  C  |  D  |  E  |  F  |
-------------------------
| ... | john| 4   | ... |
| ... | jeff| 87  | ... |
| ... | mary| 9   | ... |
| ... |  foo| cory| 54  |    <--- just shifts data in rows 4 and 5 over
| ... |  bar| eric| 33  |
| ... | paul| 5   | ... |
-------------------------
   ^----------------------------- column I have a reference/address too (column C)

我很难用Office js的工作方式来思考问题,但我能做到的主要是:

Excel.run(async (ctx) => { 
    let sheet = ctx.workbook.worksheets.getItem("Sheet1");
    let range = sheet.getRange("C4:C5").insert('right');
    range.values = [["foo"],["bar"]];
    await ctx.sync();   
}).catch(function (error) {
    console.log(error);
});
  ...
  sheet = ctx.workbook.worksheets.getItem("Sheet1");
  sheet.getRange("C:C").insert('right'); 
  await ctx.sync();

  let range = sheet.getRange("C4:C7");
  range.values = [["foo"],["bar"]];
  await ctx.sync();
  ...

我原本希望在我开始使用的列的右侧添加一个新列,并在该新列中添加数据,但由于我实际上没有在代码中硬编码地址,这变得更容易,而且操作起来仍然非常接近我想要的。。。但我肯定仍然愿意接受一种更好或更正确的方法。

我很难理解Office js的工作方式,但我能够让它主要用于以下方面:

Excel.run(async (ctx) => { 
    let sheet = ctx.workbook.worksheets.getItem("Sheet1");
    let range = sheet.getRange("C4:C5").insert('right');
    range.values = [["foo"],["bar"]];
    await ctx.sync();   
}).catch(function (error) {
    console.log(error);
});
  ...
  sheet = ctx.workbook.worksheets.getItem("Sheet1");
  sheet.getRange("C:C").insert('right'); 
  await ctx.sync();

  let range = sheet.getRange("C4:C7");
  range.values = [["foo"],["bar"]];
  await ctx.sync();
  ...

我原本希望在我开始使用的列的右侧添加一个新列,并在该新列中添加数据,但由于我实际上没有在代码中硬编码地址,这变得更容易,而且操作起来仍然非常接近我想要的。。。但我肯定仍有一种更好或更正确的方法可以做到这一点。

你能画出你想看的东西吗?你能画出你想看的东西吗?如果你画出你想发生的事情,那会有帮助。但是在任何情况下,您都不需要中间的
wait ctx.sync()
,您可以将这两件事情都放在同一批中。如果您创建了一个您想要发生的事情的绘图,这将有所帮助。但是在任何情况下,您都不需要中间的
wait ctx.sync()
,您可以让这两个东西成为同一批的一部分。