【发布时间】:2019-04-23 17:02:39
【问题描述】:
我正在尝试将一些行插入到不包含任何表格的 Excel 工作表中,但我只能插入空白行。尝试更改这些空行的值会导致 row.values 打印正确的数据,但文件本身的行仍然是空白的,即使在 context.sync() 之后也是如此。
我尝试使用Excel.Range 中的insert 方法成功插入空行:
let empty_space = sheet.getCell(index,0).getResizedRange(index, row.length)
empty_space.insert("Down")
然后我尝试使用对新范围 empty_space 的引用将其值替换为名为 row 的数组上的值(其长度用于定义上述范围):
empty_space.load("values")
await context.sync()
empty_space.values[0] = row
如果我随后执行console.log(empty_space.values),我看到列出了正确的值,但文件中的行仍然是空的。
我还尝试通过拼接将行插入工作表的使用范围:
full_range.values.splice(index, 0, row)
与上面的相同,在控制台上正确打印但显示空单元格。
如何使用 Ranges 将值数组插入到文件顶部的新行中。我无法将范围转换为表格,因为这会产生很多其他问题。
编辑:以下是我用来尝试实现此功能的完整内容:
insert_banner = async ( sheet_range, context ) => {
let banner_rows = this.state.sheet_content.banner.banner_rows
for (let r in banner_rows) {
let index = parseInt(r)
let row = banner_rows[r]
let empty_space = this.state.sheet.getCell(index,0).getResizedRange(index, row.length)
empty_space.insert("Down")
empty_space.values[0] = row
await context.sync()
}
}
banner_rows 是一个二维数组。
编辑 2:我尝试使用 Excel.Range 的 set 方法,如下所示:
empty_space.set( {values: row} )
但无论我尝试什么,我都会不断收到以下错误:
“InvalidArgument:输入数组中的行数或列数与范围的大小或维度不匹配。”
尽管在调试时我可以看到 row 和 empty_space.values 确实具有相同的尺寸,1x48。
编辑 3:这是我尝试的另一种方法:
insert_banner = async ( sheet_range, context ) => {
let banner_rows = this.state.sheet_content.banner.banner_rows
let sheet_values = sheet_range.values
for (let r in banner_rows) {
let index = parseInt(r)
let row = banner_rows[r]
sheet_values.splice(index, 0, row)
}
return context.sync()
}
在这种情况下,如果我在这个函数之后添加一个断点,我可以看到sheet_ranges 的值do 包含相应行的正确信息。我不明白为什么这没有反映在文件本身中。
【问题讨论】:
标签: javascript typescript office-js office-addins