Ms office Office js:在Excel中插入新列,并用新数据部分填充
尽管我很兴奋,但我似乎很难让它执行最基本的excel操作,而且在api上找到答案的成功率非常有限 无论如何,我怎样才能在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.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()
,您可以让这两个东西成为同一批的一部分。