C#中使用Word Interop防止表格跨页的实现问题
解决Word表格整表防跨页的问题
我太懂这种困扰了!文本的防跨页设置简单,但表格要整段不拆分确实棘手。你已经搞定了选中表格除最后一行外范围的关键步骤,接下来只需要给这些行对应的段落设置KeepWithNext属性——这就是Word客户端里「与下段同页」功能的底层实现。
直接修改你的代码就行,把选中范围的操作换成设置段落属性:
foreach (Word.Table tb in objApp.ActiveDocument.Tables) { // 定位到表格除最后一行外的所有行范围 Range rng = objDoc.Range(tb.Rows[1].Range.Start, tb.Rows[tb.Rows.Count - 1].Range.End); // 遍历范围内的每个段落,开启「与下段同页」 foreach (Word.Paragraph para in rng.Paragraphs) { para.KeepWithNext = true; } }
为什么这么做?
Word里每个表格行的末尾都隐藏着一个段落标记,给前n-1行的段落设置KeepWithNext = true,就会让这些行强制和下一行(也就是表格的下一段落)保持在同一页。最后一行不需要设置,这样整个表格就会尽可能完整地显示在一页上——当然如果表格本身长度超过一页,那还是会自动拆分,但短表格就不会出现跨页断裂的问题了。
结合你说的“每个段落仅包含一个表格”的场景,这个方案刚好能完美适配,试试吧!
内容的提问来源于stack exchange,提问作者Scott Wein
相关产品推荐
相关产品推荐

