Как установить процент ширины таблицы, используя офис JS - PullRequest
1 голос
/ 18 октября 2019

Я работаю над надстройкой Word JS для Office. Я создаю таблицу с 4 столбцами. Я хочу установить ширину в процентах 30%, 30%, 20%, 20% соответственно. Как я могу установить процент ширины таблицы, как это. Ниже приведен пример кода, который я использую для создания таблицы

function createTable() {    
  Word.run(function (context) {
    var body = context.document.body;
    var Table = body.insertTable(2, array.length, Word.InsertLocation.start, [array]);    
    return context.sync();
  })
  .catch(errorHandler);
}

1 Ответ

0 голосов
/ 19 октября 2019

Word JS API не имеет возможности (пока) определять, как должны вести себя столбцы таблицы. Он просто принимает значение по умолчанию, что означает, что столбцы будут приспосабливаться к своему содержанию.

Таким образом, единственное решение - это работа с Word Open XML. Возможно, проще всего было бы вставить всю таблицу (по крайней мере, базовые структуры), используя методы OOXML в Word JS API, а не пытаться изменить (заменить) существующую таблицу.

Ширина столбца, заданная в процентах, контролируется рядом элементов, определяющих таблицу. Эта ссылка на OfficeOpenXML.com может быть полезной.

Следующий Word Open XML, созданный с использованием объектной модели COM и свойства Table.Range.WordOpenXML, иллюстрирует основные структуры таблиц в формате таблицы. в процентах от ширины страницы (w:tblW) и ячеек в процентах от ширины таблицы (w:tcW). Таблица имела две колонки, настроенные на 20% и 80%. Обратите внимание, что Word будет минимально корректировать проценты на основе своего алгоритма компоновки, поэтому фактический процент всегда используется в приближении.

Настройки w:gridCol также отражают эти пропорции.

Помимо процентов,атрибут w:type важен. Он говорит Word, как интерпретировать настройки ширины: w:type="pct" указывает «процент».

Значения могут быть довольно большими, потому что они составляют пятых процента . То есть 5000 - это 100%.

<w:tbl>
  <w:tblPr><w:tblStyle w:val="TableGrid"/>
           <w:tblW w:w="5000" w:type="pct"/>
           <w:tblLayout w:type="fixed"/>
           <w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>
  </w:tblPr>
  <w:tblGrid><w:gridCol w:w="944"/><w:gridCol w:w="3700"/></w:tblGrid>
  <w:tr>
    <w:tc><w:tcPr><w:tcW w:w="1016" w:type="pct"/></w:tcPr>
          <w:p/>
    </w:tc><w:tc><w:tcPr><w:tcW w:w="3984" w:type="pct"/></w:tcPr>
          <w:p/>
    </w:tc><
  /w:tr>
</w:tbl>
...