如何使用 office.js 在 Word 中格式化 table 的当前单元格

How do I get the formatting the Current cell of the table in Word using office.js

我在 excel 中问了一个关于 的问题。我又遇到了同样的问题,但这次是关于 ms-word,我有可能获得在 word 应用程序中创建的 table 单元格中的格式化文本。

尽管我能够将所选文本设为 html,这为我提供了我需要的样式

 Office.context.document.getSelectedDataAsync(Office.CoercionType.Html,
        function (result) {
            if (result.status === Office.AsyncResultStatus.Succeeded) {
                showNotification('The selected text is:', '"' + result.value + '"');
            } else {
                showNotification('Error:', result.error.message);
            }
        });

我只想要当前单元格格式的文本 谢谢!

普拉迪普问得好。为了获得单元格格式,您需要使用当前处于预览状态的 Word 1.3 API。 您可以查看如何试用 1.3 Apis here。 (请注意,您需要使用该页面上公开的预览 Office.js CDN!) 查看所有新内容 here.

现在,一旦您准备好尝试 1.3,以下代码将为您提供单元格格式设置信息。一般来说,代码的作用是

  1. 验证选择是否在 table 中的单元格内。
  2. 验证完成后,我们将获得单元格的 'body'。 Body 对象包含 FONT 对象,它将包含您需要的所有格式 properties。(即颜色、字体名称、粗体、斜体等。您还可以使用 getHtml( ) 函数。

在下面找到执行此操作的代码。请注意,此代码将 return 您应用到整个单元格中的格式。如果你想更进一步,也就是逐字获取格式信息,那么你需要在正文对象上应用 split 方法,这样你就可以遍历并获取每个词的格式信息returned 范围。 希望这会有所帮助!编码愉快!!

function getFormattedText() {

        Word.run(function (context) {
            //step 1: lets get the selection's range. and find out if its within a table cell.....
            var mySelection = context.document.getSelection().parentTableCell;
            context.load(mySelection);
            return context.sync()
            .then(function () {
                if (mySelection.isNull == true) {
                    //selection is not within a cell..... 
                    console.log("selection not in a header");


                }
                else {

                    // the selection is inside a cell! lets get the content....
                    var body = mySelection.body;
                    context.load(body, { expand: 'font' });
                    return context.sync()
                    .then(function () {
                        console.log(body.font.name + " " + body.font.color);  // at this point all the font properties are available, bold, italic color.. etc...

                    })
                      .catch(function (e) {

                         console.log(e.message);
                      });
                   
                }
            })
            .catch(function (e) {

               console.log(e.message);
            });

        });
    }