6

我正在尝试创建一个带有标题的表格。我希望为表格占用的每个新页面重复此标题。如何在 C# 和 OpenXml 文字处理中做到这一点?

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

4 回答 4

7

正如克里斯所说,您需要一个 TableHeader 类的实例。它需要附加到标题行的 TableRowProperties:

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

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

row.TableRowProperties.AppendChild(new TableHeader());
于 2012-06-27T05:10:59.233 回答
4

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

下面的代码必须应用于标题行,如 TablePropertiesRow

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

tblHeaderRow.AppendChild<TableRowProperties>(tblHeaderRowProps);

露水!!

于 2015-08-06T13:44:27.897 回答
0

为页面中的每个表创建标题。您需要创建多个正文并附加到文档。

如果要为每个表创建新标题,则需要将每个表附加到新正文,然后应用分页符。

最后,将所有正文附加到文档中。

然后你终于在创建的文档中得到了你的结果。

如果有任何疑问回复我。

问候, 巴拉吉

于 2014-03-27T12:09:14.190 回答
0

我想就是你要找的。如果您将该元素应用于特定行,它将按照您描述的方式运行。

于 2011-09-07T20:36:43.467 回答