【发布时间】:2019-12-02 15:37:01
【问题描述】:
我的插件从每个工作表中删除了很多行,但是当我按下ctrl + end 时,光标仍会移动到初始范围的最后一个单元格,该单元格现在是空的。这是我正在做的事情的精简版:
const used_range = sheet.getUsedRange()
const rows = used_range.rowCount
const columns = used_range.columnCount
const full_content = this.format(used_range) // returns a new matrix of values, but with some rows removed
used_range.clear()
sheet.getRangeByIndexes( 0 , 0, full_content.length, columns ).values = full_content
sheet.getRangeByIndexes( full_content.length, 0, (rows - full_content.length), columns ).delete('Up')
await context.sync()
第二个sheet.getRangeByIndexes 包含剩余范围。如果我为填充设置颜色,我可以看到选择的范围是正确的,所以我希望调用 delete('Up') 会删除这些行,这样它们就不再是使用范围的一部分,而是工作表的最后一行仍然是删除它们之前的那个。这是一个问题,因为即使它们是空的,这些行也会影响文件大小。
有趣的是,如果我执行used_range.delete('Up') 并按ctrl + end,则会选择单元格A1。
有没有办法强制缩小工作表范围?还是我做错了什么?
【问题讨论】:
-
您是否尝试过 UsedRange.Delete 而不是 Clear?因为清除单元格与删除单元格不同......
-
请注意,如果 Excel 工作表中的范围缩小,有时在保存文件之前不会重置。
-
@Xabier 我在最后使用
Range.delete删除范围。clear只是为了清空范围,以便我可以设置新值。 -
@Plutian 这就是问题所在!再次关闭和打开文件确实减小了范围。如果您想将此设置为答案,我会接受它
标签: excel office-js office-addins