Как отформатировать ячейку таблицы в редакторе документов OnlyOffice с помощью Javascript API

Я работаю над интеграцией сервера OnlyOffice, чтобы использовать собственный подключаемый модуль, который будет использоваться для создания диаграмм и таблиц в документах, электронных таблицах и презентациях.

При добавлении таблицы я не могу применить форматирование к определенной ячейке, например жирный шрифт и цвет.

Я пробовал следующие способы добавить жирный шрифт в ячейку, но безуспешно...

Опция 1

  sScript += 'var oTable,oTableStyle, oCell, oTableRow, oParagraph, oRun, oTableRowPr;';
        sScript += 'oTableStyle = oDocument.CreateStyle("CustomTableStyle", "table");';
        sScript += 'oTable = Api.CreateTable(4,' + rowCnt + ');';
        sScript += 'oTable.SetWidth("percent", 100);';        

        for (var iRow = 0; iRow < rowCnt ; iRow++) {
           sScript += 'oTableRow = oTable.GetRow(' + iRow + ');';

           for (var iCol = 0; iCol < 4; iCol++) {
                 sScript += 'oCell = oTableRow.GetCell(' + iCol + ');';
                 sScript += 'oParagraph = oCell.GetContent().GetElement(0)';
                 sScript += 'oRun = Api.CreateRun();';
                 sScript += 'oRun.SetBold(true);';
                 sScript += 'oRun.AddText("Test Element");';
                 sScript += 'oParagraph.AddElement(oRun);';
            }
        }

Вариант 2

sScript += 'var oTable,oTableStyle, oCell, oTableRow, oParagraph, oRun, oTableRowPr;';
        sScript += 'oTableStyle = oDocument.CreateStyle("CustomTableStyle", "table");';
        sScript += 'oTable = Api.CreateTable(4,' + rowCnt + ');';
        sScript += 'oTable.SetWidth("percent", 100);';        

        for (var iRow = 0; iRow < rowCnt ; iRow++) {
            sScript += 'oTableRow = oTable.GetRow(' + iRow + ');';
            for (var iCol = 0; iCol < 4; iCol++) {
                sScript += 'oCell = oTableRow.GetCell(' + iCol + ');';
                sScript += ' oCell.GetContent().GetElement(0).SetBold(true);';
                sScript += 'oCell.GetContent().GetElement(0).AddText("Firm Name");';
            }
        }

Пожалуйста, направляйте..


person Vikas Nale    schedule 08.12.2017    source источник


Ответы (1)


Я взял ваш код из варианта 1 и сделал плагин. Вы пропустили точку с запятой в строке

sScript += 'oParagraph = oCell.GetContent().GetElement(0)';

sScript += 'oParagraph = oCell.GetContent().GetElement(0);';

Код моего плагина:

(function(window, undefined){

window.Asc.plugin.init = function()
{
    var rowCnt = 7;
    var sScript = 'var oDocument = Api.GetDocument();';
    sScript += 'var oTable,oTableStyle, oCell, oTableRow, oParagraph, oRun, oTableRowPr;';
    sScript += 'oTableStyle = oDocument.CreateStyle("CustomTableStyle", "table");';
    sScript += 'oTable = Api.CreateTable(4,' + rowCnt + ');';
    sScript += 'oTable.SetWidth("percent", 100);';        

    for (var iRow = 0; iRow < rowCnt ; iRow++) {
       sScript += 'oTableRow = oTable.GetRow(' + iRow + ');';

       for (var iCol = 0; iCol < 4; iCol++) {
             sScript += 'oCell = oTableRow.GetCell(' + iCol + ');';
             sScript += 'oParagraph = oCell.GetContent().GetElement(0);';
             sScript += 'oRun = Api.CreateRun();';
             sScript += 'oRun.SetBold(true);';
             sScript += 'oRun.AddText("Test Element");';
             sScript += 'oParagraph.AddElement(oRun);';
        }
    }
    sScript += 'oDocument.InsertContent([oTable]);';
    window.Asc.plugin.info.recalculate = true;
    this.executeCommand("close", sScript);
};

window.Asc.plugin.button = function(id)
{
};
})(window, undefined);

Оно работает. Результат

person Sergey Luzyanin    schedule 10.12.2017