3

こんにちは、次のコードは、セル内のいくつかの html を通常のテキストとして表示しようとしているコードですが、奇妙なことは、箇条書きを期待してすべてのものが表示され、テキストをテーブルに入れると箇条書きで表示されますが、箇条書きではなく移動するとが表示され、コードのデバッグを行うと、箇条書きはあるがドキュメントには表示されないことがわかりました。

  function addNewTable() {
    var fruitsUnderfilled = [["<b><i>Apple</i></b>", "red", "", ""], ["Banana", "yellow", "long", "mushy"], ["Pear", "green", "oblong", ""]];

    var document = Office.context.document;
    document.setSelectedDataAsync(fruitsUnderfilled, function (result) {
        console.log(result);

        document.bindings.addFromSelectionAsync(Office.BindingType.Table, function (result) {
            console.log(result);

            var binding = result.value;
            binding.addHandlerAsync(Office.EventType.BindingSelectionChanged, onBindingSelectionChanged);
        });
    });
}

var onBindingSelectionChanged = function (results) {
    Word.run(function (context) {
        if (!isExceuted) {

            isExceuted = true;
            var tableCell = context.document.getSelection().parentTableCell;
            context.load(tableCell);

            return context.sync()
                .then(function () {
                    if (tableCell.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 = tableCell.body;

                        var html = tableCell.body.getHtml();

                        var tableHtml = tableCell.body.getHtml();

                        context.sync()
                           .then(function () {
                               var cellHtml = html.value;
                               $("#resultDiv").html(cellHtml);
                               $("#resultDiv table").remove();
                               //$("#resultDiv p.MsoNormal").html("<table><tr><td><ul><li>yellow</li></ul></td></tr></table>");
                               $("#resultDiv p.MsoNormal").html("<ul><li>yellow</li></ul>");
                               var value = "<html>" + $("#resultDiv").html() + "</body>";
                               // Option 1
                               body.insertHtml(value, Word.InsertLocation.replace);

                               // Option 2
                               //body.clear();
                               //body.insertHtml(newHtml, Word.InsertLocation.end);

                               return context.sync().then(function () {
                                   console.log('HTML was successfully replaced.');
                                   return;
                               }).catch(function (e) {
                                   console.log(e.message);
                               });
                           }).catch(function (e) {
                               console.log(e.message);
                           });

                    }
                }).catch(function (e) {
                    console.log(e.message);
                });
        }
        else {
            isExceuted = false;
        }

    });
};
4

0 に答える 0