c# - 打开 XML 表头同一页

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

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

最佳答案

Word 有许多工具可以控制在其自动文本流中分页的位置/方式(或不可以):

  1. 我假设您已经知道表格属性不允许行跨页(一行的所有内容被强制在同一页上,行内没有中断):<w:trPr><w:cantSplit/></w:trPr>在 Word Open XML 中,对应于 CantSplit Open XML SDK 中的类(TableRowProperties 的子类)/AllowBreakAcrossPages在对象模型/Word UI 中的表属性/行/允许跨页拆分
  2. 然后是表格单元格中的段落 ( <w:p> ) 的属性。在这种情况下最相关的是将具有此属性的段落与以下段落保持在同一页面上:<w:pPr><w:keepNext/></w:pPr>在 Word Open XML/KeepNext Open XML SDK 中的类(ParagraphProperties 的子类)/Paragraph.KeepWithNext在对象模型中/段落/换行符和分页符/与下一页保持一致在 Word 用户界面中。
  3. 还有一个属性可以强制一个段落的所有行在页面上保持在一起:<w:pPr><w:keepLines></w:pPr>在 Word Open XML/KeepLines Open XML SDK 中的类/Paragraph.KeepTogether在对象模型中/*在 Word UI 中的段落/换行和分页符/将行保持在一起。
  4. 同样会影响段落内容中断方式的是寡/孤控制,它可以防止多行段落的单行在页面上结束/开始。这是这些属性中唯一默认激活的属性:<w:pPr><w:widowControl/></w:pPr>在 Word Open XML/WidowControl Open XML SDK 中的类/Paragraph.WidowControl在对象模型/Word UI 中的 Paragarph/Line and Page breaks/Widow/Orphan control
  5. 最后,为了在不实际插入分页符的情况下强制分页符,有一个属性可以应用于段落以强制它在新页面上开始。如果新的“章节”应该总是从新页面开始,这作为样式定义的一部分特别有用:<w:pPr><w:pageBreakBefore/></w:pPr>/PageBreakBefore Open XML SDK 中的类/Paragraph.PageBreakBefore在对象模型/Paragarph/Line and Page breaks/Page break before 在 Word UI 中。

其中每一个都非常有趣且功能强大。它们作为样式定义的一部分特别有效。结合使用它们可以让您对页面布局进行相当精细的控制,但您必须小心。例如,如果您简单地对表格中的所有段落应用“与下一个保持一致”,最终效果将是 Word 将尝试将整个表格保持在一页上,如果它更长,将打破它,就好像该属性没有完全被应用。

这就是我详细说明命令所在位置的所有变体的原因之一。在 UI 中尝试这些通常会有很大帮助;或者,如果您遇到问题,调查哪些设置在结果中处于事件状态,但结果并不是您想要的。

关于c# - 打开 XML 表头同一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36439159/

相关文章:

c# - 如何使用 ASP.NET MVC 3 将 "expensive"数据从一个页面传递到另一个页面?

asp.net - 使用 IdentityServer 4 和 ASP.NET Web 应用程序 (.NET Framework)

c# - 在 GridView 中显示一对多关系中的单个值

c# - 通过 C# 访问 Azure 中的 keyvault 时引发异常

asp.net - 从 asp :login control 中删除“记住我”复选框

vba - 如何一次替换多个字符串

macos - 使用 VBA 在 Word 2011 for Mac OSX 中从 URL 添加图像

ms-word - 将 Office JS 页面中的拖放到 Word 文档中

c# - 使用 linq 反转 ObservableCollection<objectType>

c# - 无法删除通过 C# 中的 Assembly.LoadFrom 加载的文件