3

我想在一个word文档中生成多个表,每个表有2行。但我想把这两行放在一起(如果可能的话)。

  1. new KeepNext()第一行不起作用
  2. new KeepNext()在第一行的最后一段不起作用
  3. new CantSplit()在桌子上不起作用

在所有情况下,第二行(如果太大)都位于第二页上。最后一个单元格(内容大的单元格)上的Anew CantSplit()避免了单元格的中断。但是没有一个选项可以避免表格的拆分(按行)。

4

2 回答 2

4

您需要为每一行添加一个 KeepNext 以将它们保持在一起。document.xml 中的 XML 输出应该类似于:

在此处输入图像描述

此代码成功创建了一个包含 2 行的表,这些表将跨页保持在一起:

Table table = wordDoc.MainDocumentPart.Document.Body.AppendChild(new Table());

TableRow row1 = table.AppendChild(new TableRow());
TableCell cell1 = row1.AppendChild(new TableCell());
Paragraph para1 = cell1.AppendChild(new Paragraph());
PreviousParagraphProperties prop1 = para1.AppendChild(new PreviousParagraphProperties());
KeepNext k = prop1.AppendChild(new KeepNext());
Run run1 = para1.AppendChild(new Run());
run1.AppendChild(new Text("This is some long text"));

TableRow row2 = table.AppendChild(new TableRow());
TableCell cell2 = row2.AppendChild(new TableCell());
Paragraph para2 = cell2.AppendChild(new Paragraph());
PreviousParagraphProperties prop2 = para1.AppendChild(new PreviousParagraphProperties());
KeepNext k2 = prop2.AppendChild(new KeepNext());
Run run2 = para2.AppendChild(new Run());
run2.AppendChild(new Text("This is some even longer text"));
于 2014-07-29T11:55:11.753 回答
0
i did it like this when I had to apply this to all tables:

private static void AlterTableType(List<Table> t)
    {
        foreach (Table table in t)
        {
            foreach (TableRow row in table.Descendants<TableRow>())
            {
                TableRowProperties trP = new TableRowProperties();
                CantSplit split = new CantSplit();
                trP.Append(split);
                row.AppendChild(trP);
            }
        }
    }

获取所有表格

var t = package.MainDocumentPart.Document.Body.Descendants<Table>().ToList()
于 2017-03-31T08:48:24.600 回答