如何使用OpenXml Wordprocessing在每个新页面中创建表头

8

我正在尝试创建一个带有标题的表格。我希望这个标题在表格跨越多页时能够重复出现。在C#和OpenXml Wordprocessing中,我该如何实现这个功能?

DocumentFormat.OpenXml.Packaging.WordprocessingDocument internalDoc = 
DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(stream, true);

var tables = wordDoc.MainDocumentPart.Document.Descendants<SdtBlock>().Where
( r => r.SdtProperties.GetFirstChild<Tag>().Val.Value.StartsWith(DATA_TABLE_TAG));

Table table = tables.Descendants<Table>().Single();
//Here can I set some property to repeat the header of the table? 
4个回答

9

正如Chris所说,你需要一个TableHeader类的实例。它需要附加到标题行的TableRowProperties中:

var row = table.GetFirstChild<TableRow>();

if (row.TableRowProperties == null)
    row.TableRowProperties = new TableRowProperties();

row.TableRowProperties.AppendChild(new TableHeader());

2
小提示:在使用OpenXML SDK2时,您需要将 TableHeader 对象的 Val 属性设置为 OnOffOnlyValues.On,例如 new TableHeader() { Val = OnOffOnlyValues.On }(请参见 icalvo 的答案)。 - Chaquotay

6

对于任何寻找相同问题的人:

以下代码必须应用于标题行,作为TablePropertiesRow。

TableRowProperties tblHeaderRowProps = new TableRowProperties(
    new CantSplit() { Val = OnOffOnlyValues.On },
    new TableHeader() { Val = OnOffOnlyValues.On }
);

tblHeaderRow.AppendChild<TableRowProperties>(tblHeaderRowProps);

Deww!!!

0
在页面中为每个表格创建标题。 您需要创建多个body并将其附加到文档中。
如果您想为每个表格创建新的标题,则需要将每个表格附加到新的body,然后应用分页符。
最后,将所有bodies附加到文档中。
然后您就可以在创建的文档中得到结果了。
如果有任何疑问,请回复我。
敬礼, 巴拉吉

0

我认为this是你正在寻找的东西。如果将该元素应用于特定行,它将表现出你所描述的行为。


请问您能否详细说明如何将该元素应用到一行中?文档写得不是很清楚。谢谢。 - Lynn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接