首页 > 解决方案 > showHeaders=false 使用 Javascript 导致意外的表格范围

问题描述

使用 Excel Javascript 时,我注意到表对象中有一些意外行为。为了演示这个问题,我稍微修改了 ScriptLab 示例附带的一些代码,该示例显示了如何将列和行添加到表中。下面的代码来自该示例,但我添加了代码行“expensesTable.showHeaders = false;” 我已经注释掉了代码行“expensesTable.GetHeaderRowRange() ...”。其余的都是一样的。

/** Create a new table with sample data */
async function setup() {
  await Excel.run(async (context) => {
    context.workbook.worksheets.getItemOrNullObject("Sample").delete();
    const sheet = context.workbook.worksheets.add("Sample");

    const expensesTable = sheet.tables.add("A1:D1", false /*hasHeaders*/);
    expensesTable.name = "ExpensesTable";
    expensesTable.showHeaders = false;   //only new line
    //expensesTable.getHeaderRowRange().values = [["Date", "Merchant", "Category", "Amount"]];

    expensesTable.rows.add(null /*add at the end*/, [
      ["1/1/2017", "The Phone Company", "Communications", "$120"],
      ["1/2/2017", "Northwind Electric Cars", "Transportation", "$142"],
      ["1/5/2017", "Best For You Organics Company", "Groceries", "$27"],
      ["1/10/2017", "Coho Vineyard", "Restaurant", "$33"],
      ["1/11/2017", "Bellows College", "Education", "$350"],
      ["1/15/2017", "Trey Research", "Other", "$135"],
      ["1/15/2017", "Best For You Organics Company", "Groceries", "$97"]
    ]);

    sheet.getUsedRange().format.autofitColumns();
    sheet.getUsedRange().format.autofitRows();

    sheet.activate();
    await context.sync();
  });
}

当你运行它时,结果看起来像这样......

奇怪的桌子

请注意,该表现在定义为范围 A9:D9。如果选择左上角的命名范围“expenseTable”...

演示下拉

它选择行 A9:D9。我本来希望表格在单元格 A1:D8 中。

但是,如果删除“expensesTable.showHeaders = false;”行 现在表格是范围 A1:D8(如我所料)。你最终得到这个...

预期的

这是一个错误还是我错过了什么?

更新

我使用的是 7 月 15 日推出的 Excel 版本 1907(内部版本 11901.20080)。https://www.tenforums.com/windows-10-news/136720-office-insider-monthly-targeted-v1907-build-11901-20080-july-15-a.html

在此之前,我不相信(但不是 100% 肯定)这种行为存在。另一个更新,我在我们办公室发现了一台装有 Excel 版本 1906 的 PC,它没有表现出相同的行为。

标签: office-js

解决方案


推荐阅读