Office Add-in development: Insert table in Word 2016

五迷三道 提交于 2019-12-22 11:27:46

问题


I am trying to insert a table using Office.js inside the body of a document but to no avail.

I have used the following code:

function insertSampleTable() {

    showNotification("Insert Table", "Inserting table...")

    Word.run(function (context) {
        // Create a proxy object for the document body.
        var body = context.document.body;

        body.insertTable(2, 2, Word.InsertLocation.end, ["a"]);

        // Synchronize the document state by executing the queued commands, and return a promise to indicate task completion.
        return context.sync();
    })
    .catch(errorHandler);

}

But upon clicking the button, it gives me the error below:

Error: TypeError: Object doesn't support property or method 'insertTable'

Any help will be appreciated. I have tried to check the Microsoft Office Dev site but they don't have any samples like this one.

Thanks!


回答1:


Maybe Michael is not aware of this, but we recently shipped (its now GA) a table object that you can use in word. And gives you WAY more functionalities than just inserting the HTML.

Here is the documentation for the table object: https://docs.microsoft.com/en-us/javascript/api/word/word.table?view=office-js

btw your code has an error. the expected argument is a 2D array. so you need to supply something like this:

   Word.run(function (context) {
            // Create a proxy object for the document body.
            var body = context.document.body;

            body.insertTable(2, 2, Word.InsertLocation.end, [["a","b"], ["c","d"]]);

            // Synchronize the document state by executing the queued commands, and return a promise to indicate task completion.
            return context.sync();
        }).catch(function (e) {

            console.log(e.message);
        })
        

hope this helps!!!

thanks!! Juan (PM for the Word JavaScript API)




回答2:


You can use the insertHTML method on any Range/Body/Paragraph object to accomplish this task. Here's the code:

Word.run(function (context) {
    context.document.body.insertHtml(
        "<table><tr><td>a</td><td>b</td></tr><tr><td>1</td><td>2</td></tr></table>",
        Word.InsertLocation.end
    );
    return context.sync().then(function(){});
}).catch(function(error){});

-Michael Saunders (PM for Office add-ins)



来源:https://stackoverflow.com/questions/38139561/office-add-in-development-insert-table-in-word-2016

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!