如何使用office js设置table宽度百分比

How to set table width percentage using office js

我正在处理 Office JS word 插件项目。 我正在创建一个包含 4 列的 table。我想将宽度百分比分别设置为 30%、30%、20%、20%。我怎样才能像这样设置 table 宽度百分比。下面是我用于 table 创建

的示例代码
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);
}

Word JS API 没有能力(还)指定 table 的列应该如何表现。它只是采用默认值,这意味着列将根据其内容进行调整。

所以唯一的解决办法是使用 Word Open XML。最简单的可能是使用 Word JS API 的 OOXML 方法插入整个 table(至少是基本结构),而不是尝试更改(替换)现有的 table。

列宽设置为百分比时,由定义 table 的多个元素控制。这个link到OfficeOpenXML.com可能有用。

以下 Word Open XML,使用 COM 对象模型和 属性 Table.Range.WordOpenXML 生成,说明了 table 的基本 table 结构格式为页面宽度的百分比 (w:tblW),单元格为 table 宽度的百分比 (w:tcW)。 table 有两列,设置为 20% 和 80%。请注意,Word 会根据其布局算法对百分比进行最低限度的调整,因此实际使用的百分比始终是一个近似值。

w:gridCol 设置也反映了这些比例。

除了百分比,w:type 属性也很重要。它告诉 Word 如何解释宽度设置:w:type="pct" 指定 "percent"。

这些值可能看起来很大,那是因为它们是 五分之一百分比。所以 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>

在table下使用autoFitWindow()函数。