【问题标题】:How do I specify that a Word TableCell shouldn't wrap using the Open XML SDK?如何指定不应使用 Open XML SDK 换行的 Word TableCell?
【发布时间】:2016-07-29 09:46:57
【问题描述】:

我正在使用 Open XML SDK 生成一个简单的 Word (docx) 文档。一个认为我正在努力解决的问题是如何阻止表格单元格内容的换行。这是我生成表格单元格的代码:

private TableCell CreateTableCell(string text, int padding)
{
    string marginWidth = padding.ToString(CultureInfo.InvariantCulture);

    return new TableCell(
        new Paragraph(new Run(new Text(text))),
        new TableCellProperties(
            new TableCellWidth { Type = TableWidthUnitValues.Auto },
            new NoWrap(),
            new TableCellMargin(
                new LeftMargin { Type = TableWidthUnitValues.Dxa, Width = marginWidth },
                new TopMargin { Type = TableWidthUnitValues.Dxa, Width = marginWidth },
                new RightMargin { Type = TableWidthUnitValues.Dxa, Width = marginWidth },
                new BottomMargin { Type = TableWidthUnitValues.Dxa, Width = marginWidth })));
}

这会导致表格单元格宽度的类型为“dxa”——而不是“auto”——即使我指定了 auto。而且,如果我在 xml 文档中手动将所有这些“dxa”值替换为“auto”,则该文档是所需的。所以,显然我的“自动”值被忽略了。

我在这里错过了什么?

【问题讨论】:

    标签: ms-word openxml openxml-sdk tablecell


    【解决方案1】:

    您不会在 Word 中找到单个单元格或整个表格的文本换行。 See here.

    你能做的是;设置 word 的属性,如果文本超过列宽,它会调整列的大小。

    设置 TableCellWidth 属性不会帮助您进行文本换行

    Table Layout 属性添加到包含单元格的表中,并将其值设置为“auto”,或者您可以完全省略该属性。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:
      var cellProperties = new TableCellProperties(new NoWrap { Val = OnOffOnlyValues.On });
      cell.AppendChild(cellProperties); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多