Open XML Table Header同一页面

时间:2016-04-06 00:01:47

标签: c# asp.net ms-word openxml openxml-sdk

我正在制作一个OpenXML文档生成器。它根据系统数据生成Word文档。我已经设置了表头,它们可以解决问题。我的问题如下: 在特殊情况下(如果标题适合页面,但下一行没有)它将显示标题,然后将有分页符,它将再次显示在新页面上。这当然是预期的行为,并通过手动进入生成的文档并在表之前添加一行或两行,将其转移到下一页来修复,但我想知道是否有办法使标题仅显示如果至少第一个单元格适合页面?我们的文档中显示了数百个表,我不喜欢以编程方式控制输出的显示方式。 你可以推荐任何提示或技巧吗?

1 个答案:

答案 0 :(得分:0)

Word提供了许多工具来控制分页在其自动文本流中可能(或可能不)发生的位置/方式:

  1. 我假设你已经知道table属性不允许行跨越页面(一行的所有内容都被强制放在同一页面上,行内没有中断):{{1}在Word Open XML中,对应于Open XML SDK中的<w:trPr><w:cantSplit/></w:trPr>类(TableRowProperties的子代)/对象模型中的CantSplit / 表属性/行/允许跨页间< / em>在Word UI中。
  2. 然后有一些属性可用于表格单元格中的段落(AllowBreakAcrossPages)。在这种情况下,最相关的是将具有此属性的段落与下面的段落保持在同一页面上的段落:Word {1}}在Word Open XML / <w:p>类(ParagraphProperties的子项)中Word UI中的对象模型中的Open XML SDK / <w:pPr><w:keepNext/></w:pPr> / Paragraph / Line和Page break / Keep with Next
  3. 还有一个属性可以强制段落的所有行在页面上保持一致:Word Open XML中的KeepNext / Open XML SDK / Paragraph.KeepWithNext中的<w:pPr><w:keepLines></w:pPr>类Word UI中的对象模型/ *段落/行和分页符/将行保持在一起。
  4. 还可以影响段落内容如何中断的寡妇/孤儿控制,这可以防止单行多行段落在页面上结束/开始。这是默认情况下激活的这些属性中唯一一个:Word Open XML中的KeepLines / Open XML SDK中的Paragraph.KeepTogether类/对象模型中的<w:pPr><w:widowControl/></w:pPr> / Paragarph Word UI中的/ Line和分页符/ Widow / Orphan控件
  5. 最后,为了强制分页而不实际插入分页符,可以将一个属性应用于段落以强制它在新页面上启动。如果新的“章节”应始终在新页面上开始,这在样式定义中非常有用:对象中的Open XML SDK / WidowControl中的Paragraph.WidowControl / <w:pPr><w:pageBreakBefore/></w:pPr>类在Word UI中之前的model / Paragarph / Line和分页符/分页符。
  6. 这些中的每一个都是有趣而有力的。它们作为样式定义的一部分特别有效。结合使用,它们可以为您提供相当精细的页面布局控制,但您必须要小心。例如,如果您只是将“keep with next”应用于表中的所有段落,那么最终效果将是Word将尝试将整个表保留在一个页面上,如果更长,则会将其破坏,就好像该属性没有一直适用。

    这就是我列出可以找到命令的所有变体的原因之一。在UI中尝试这些通常会有很大帮助;或者,如果您遇到问题,请调查结果中哪些设置处于活动状态,这不是您想要的。