首页 > 解决方案 > 如何在office js中添加多个选定的单元格注释?

问题描述

我正在使用 office js,但无法添加多个选定的单元格注释。我已经阅读了 office js 文档,但找不到我想要的类似解决方案。如果我在代码下方选择了一个单元格,则可以正常工作。

   await Excel.run(async (context) => {
                 const range = context.workbook.getSelectedRange();
        
          const comment = context.workbook.comments.getItemByCell(range);

          comment.content = "add comment";

          await context.sync();  
});

我是 office js 的初学者,下面的代码获取地址 Sheet1!I4:K4.so 我是否手动循环添加了 I4、J4、K4 之类的注释,但这不是更好的方法。如果我错了,请纠正我,谢谢。

try {
  await Excel.run(async (context) => {
    try {
      var range = context.workbook.getSelectedRange();
      range.load(["address"]);
      return context.sync().then(function () {
        const addString = range.address;
       //Sheet1!I4:K4

      });
    } catch (error) {
      // eslint-disable-next-line no-empty
      if (error.code == Excel.ErrorCodes.itemNotFound) {
      } else {
        throw error;
      }
    }

  });
} catch (error) {
  ErrorProvider.getInstance().notify(JSON.stringify(error));
}

标签: office-js

解决方案


我认为这可以满足您的要求。请看下面的代码:

async function run() {
  await Excel.run(async (context) => {
    let wb = context.workbook
    let ws = wb.worksheets.getActiveWorksheet()
    let rang = wb.getSelectedRange()
    rang.load("rowCount, columnCount")
    await context.sync()
    let rangRowCount = rang.rowCount
    let rangColCount = rang.columnCount
    let rangeAddresses = []
    for (let i = 0; i < rangRowCount; i++) {
      {
        for (let j = 0; j < rangColCount; j++)
        {
          let newRang = rang.getCell(i,j)
          rangeAddresses.push(newRang.load("address"))
        }
      }

    }
    await context.sync()
    rangeAddresses.forEach(e => {
      wb.comments.add(e.address, "This is a comment")
    })
  })
}

推荐阅读