Ms word 无法在绑定时插入表

Ms word 无法在绑定时插入表,ms-word,ms-office,office-addins,office-js,Ms Word,Ms Office,Office Addins,Office Js,我正在尝试将表插入RichText内容控件(我发现说明绑定仅适用于RichText控件的文档),但在以下情况下失败: 指定数据对象的类型与当前选择不兼容 我能够使用强制类型“HTML”将HTML插入绑定中。 我还可以在选择光标处插入一个表,但如果有人必须单击他们想要的表的位置,则会严重降低文档自动化体验。 我还可以通过编程方式导航到绑定,然后执行插入来插入表,但这似乎有点不方便。 我的语法是错误的还是不可能在绑定中插入表而当前选择不在其中 CSHTML: @{ ViewBag.Title

我正在尝试将表插入RichText内容控件(我发现说明绑定仅适用于RichText控件的文档),但在以下情况下失败:

指定数据对象的类型与当前选择不兼容

我能够使用强制类型“HTML”将HTML插入绑定中。 我还可以在选择光标处插入一个表,但如果有人必须单击他们想要的表的位置,则会严重降低文档自动化体验。 我还可以通过编程方式导航到绑定,然后执行插入来插入表,但这似乎有点不方便。 我的语法是错误的还是不可能在绑定中插入表而当前选择不在其中

CSHTML:

@{
    ViewBag.Title = "Home Page";
}

<div class="row">
    <button onclick="return addRowsWithoutSelection();"> Insert Table At Binding </button><br />
    <button onclick="return navigateToBinding();"> Navigate then insert table </button><br />
    <button onclick="return addRowsAtSelection();"> Insert Table At Selection </button><br />
    <button onclick="return addHTML();"> Insert HTML </button><br />
</div>
    Results: <div id="results"></div>
<div id="trace"></div>
@{
ViewBag.Title=“主页”;
}
在绑定时插入表
导航然后插入表格
在所选位置插入表格
插入HTML
结果:
Program.js:

var myTable;

// The initialize function is required for all apps.
Office.initialize = function (reason) {
    $(document).ready(function () {

        myTable = new Office.TableData();
        myTable.headers = ["First Name", "Last Name", "Grade"];
        myTable.rows = [["Brittney", "Booker", "A"], ["Sanjit", "Pandit", "C"], ["Naomi", "Peacock", "B"]];

        try {
            Office.context.document.bindings.addFromNamedItemAsync('TheTable',
                Office.BindingType.Text, { id: 'tbl' },
                    function (result) {
                        if (result.status === Office.AsyncResultStatus.Succeeded) {
                            trace('Control bound. Binding.id: ' + result.value.id + ' Binding.type: ' + result.value.type);
                        } else {
                            trace('Error:', result.error.message);
                        }
                    });

        } catch (e) { trace("Exception: " + e.message); }
    });
}

//THIS WORKS!
function addHTML() {
    try {
        Office.select("bindings#tbl").setDataAsync("<table border='1' width='100%'><thead><tr><th style='background-color:#ff00ff'>Description</th><th>From</th><th>To</th></tr></thead></table>", { coercionType: "html" },
            function (asyncResult) {
                if (asyncResult.status == "failed") {
                    trace('Error with addHTML : ' + asyncResult.error.message);
                } else { trace("Success calling addHTML()"); }
            });

    } catch (e) { trace("Exception: " + e.message); }
}
//THIS WORKS!
function addRowsAtSelection() {

    try {
        Office.context.document.setSelectedDataAsync(myTable, { coercionType: Office.CoercionType.Table },
            function (result) {
                var error = result.error
                if (result.status === Office.AsyncResultStatus.Failed) {
                    trace(error.name + ": " + error.message);
                } else { trace("Success calling addRowsAtSelection"); }
            });
    } catch (e) { trace("Exception: " + e.message); }
}

//FAIL!
function addRowsWithoutSelection() {
    try {
        Office.select("bindings#tbl").setDataAsync(myTable, { coercionType: Office.CoercionType.Table },
            function (asyncResult) {
                if (asyncResult.status == "failed") {
                    trace("Action failed with error: " + asyncResult.error.message);
                } else { trace("Success with addRowsWithoutSelection.");}
            });
    } catch (e) {trace("Exception: " + e.message);}
}

//WORKS!
function navigateToBinding() {
    Office.context.document.goToByIdAsync("tbl", Office.GoToType.Binding, function (asyncResult) {
        if (asyncResult.status == "failed") {
            trace("Go To Binding failed with error: " + asyncResult.error.message);
        }
        else {
            trace("Navigation successful");
            try {
                Office.context.document.setSelectedDataAsync(myTable, { coercionType: Office.CoercionType.Table },
                   function (asyncResult) {
                       if (asyncResult.status == "failed") {
                           trace("Action failed with error: " + asyncResult.error.message);
                       } else { trace("Success with addRowsWithoutSelection."); }
                   });
            } catch (e) { trace("Exception: " + e.message); }
        }
    });
}
function trace(msg) {
    $("#trace").append(msg + "<br />");
}
var-myTable;
//所有应用程序都需要初始化功能。
Office.initialize=函数(原因){
$(文档).ready(函数(){
myTable=新建Office.TableData();
myTable.headers=[“名字”、“姓氏”、“等级”];
myTable.rows=[“布里特尼”、“布克”、“A”]、[“桑吉特”、“潘迪特”、“C”]、[“娜奥米”、“孔雀”、“B”];
试一试{
Office.context.document.bindings.addFromNamedItemAsync('TheTable',
Office.BindingType.Text,{id:'tbl'},
功能(结果){
if(result.status==Office.AsyncResultStatus.successed){
跟踪('Control-Binding.Binding.id:'+result.value.id+'Binding.type:'+result.value.type);
}否则{
跟踪('Error:',result.Error.message);
}
});
}catch(e){trace(“异常:+e.message);}
});
}
//这管用!
函数addHTML(){
试一试{
Office.select(“bindings#tbl”).setDataAsync(“DescriptionFromTo”,{胁迫类型:“html”},
函数(异步结果){
如果(asyncResult.status==“失败”){
跟踪('addHTML错误:'+asyncResult.Error.message);
}else{trace(“成功调用addHTML()”);}
});
}catch(e){trace(“异常:+e.message);}
}
//这管用!
函数addRowsAtSelection(){
试一试{
Office.context.document.setSelectedDataAsync(myTable,{胁迫类型:Office.胁迫类型.Table},
功能(结果){
var error=result.error
if(result.status==Office.AsyncResultStatus.Failed){
跟踪(error.name+:“+error.message);
}else{trace(“成功调用addRowsAtSelection”);}
});
}catch(e){trace(“异常:+e.message);}
}
//失败!
函数addRowsWithoutSelection(){
试一试{
Office.select(“bindings#tbl”).setDataAsync(myTable,{胁迫类型:Office.胁迫类型.Table},
函数(异步结果){
如果(asyncResult.status==“失败”){
跟踪(“操作失败,错误为:+asyncResult.error.message”);
}else{trace(“addRowsWithoutSelection成功”);}
});
}catch(e){trace(“异常:+e.message);}
}
//工作!
函数navigateToBinding(){
Office.context.document.goToByIdAsync(“tbl”、Office.GoToType.Binding、函数(asyncResult){
如果(asyncResult.status==“失败”){
跟踪(“转到绑定失败,错误为:“+asyncResult.error.message”);
}
否则{
跟踪(“导航成功”);
试一试{
Office.context.document.setSelectedDataAsync(myTable,{胁迫类型:Office.胁迫类型.Table},
函数(异步结果){
如果(asyncResult.status==“失败”){
跟踪(“操作失败,错误为:+asyncResult.error.message”);
}else{trace(“addRowsWithoutSelection成功”);}
});
}catch(e){trace(“异常:+e.message);}
}
});
}
函数跟踪(msg){
$(“#trace”).append(msg+”
); }

我想您可能弄错了投标类型。在您的代码中
Office.BindingType.Text,{id:'tbl'}, 您可以选择使用文本绑定。但是,如果您正在处理一个表,并且希望使用表功能,则可能需要使用表绑定。您可以在上找到有关绑定类型的更多信息

谢谢,
天空

我想这需要一张桌子,但我会试试看。