Ms word 如何使用office js设置表格宽度百分比

Ms word 如何使用office js设置表格宽度百分比,ms-word,office-js,add-in,word-addins,Ms Word,Office Js,Add In,Word Addins,我正在从事Office JS word插件项目。 我正在创建一个包含4列的表。我想将宽度百分比分别设置为30%,30%,20%,20%。我怎样才能像这样设置桌子的宽度。下面是我用于创建表的示例代码 function createTable() { Word.run(function (context) { var body = context.document.body; var Table = body.insertTable(2, array.length, Wo

我正在从事Office JS word插件项目。 我正在创建一个包含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);
}

JSAPI这个词还没有能力指定表列的行为。它只是假设默认值,这意味着列将根据其内容进行调整

因此,唯一的解决方案是使用openxml这个词。最简单的方法可能是使用wordjsapi的OOXML方法插入整个表(至少是基本结构),而不是试图更改(替换)现有表

列宽设置为百分比时,由定义表的许多元素控制。这对于OfficeOpenXML.com可能很有用

使用COM对象模型和属性
Table.Range.WordOpenXML
生成的以下Word Open XML说明了表格的基本表格结构,表格格式为页面宽度的百分比(
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>

<
/w:tr>

同意,但我的表创建将基于从一个api接收的数据进行动态。此api将提供所有列值以及宽度。在OOXML中,我需要设置一个预定义的模板,并根据该表定义绘制表。如何动态设置宽度并绘制表格?请参阅我刚才对您关于数据部分的问题的回答。如果您不具备将数据“循环”成XML的背景,那么您需要后退一步并了解这一点。这是一个多方面的主题,对于堆栈溢出来说太宽泛了。