如何用C# Word Interop在Windows自托管代理自动设置Word表格两行段中不分页
问题原因
你选中的是跨两个表格单元格的范围,此时wordApp.Selection.Paragraphs会因为选中范围包含表格单元格结构边界,无法正常返回段落集合。你不需要依赖Selection对象操作,直接对已构造的Range对象自带的Paragraphs属性设置即可。
修正后的代码逻辑
你可以把最后三行代码替换为以下内容:
// 不需要调用Select(),直接操作构造好的Range对象即可 Range targetRange = document.Range(ulCell.Range.Start, lrCell.Range.End); // 额外关闭表格行跨页断行开关,避免表格行本身被拆分 imagesTable.Rows[1].AllowBreakAcrossPages = 0; imagesTable.Rows[2].AllowBreakAcrossPages = 0; // 给范围内所有段落设置段中不分页、与下段同页 Paragraphs p = targetRange.Paragraphs; p.KeepTogether = -1; // Word Interop里布尔属性真值为-1,部分环境写1也能兼容 p.KeepWithNext = -1;
补充说明
如果需要严格对齐Word手动操作Keep Lines Together的效果,只需要设置KeepTogether属性即可,KeepWithNext是对应“与下段同页”的设置,可根据你的实际需求选择是否保留。
内容的提问来源于stack exchange,提问作者VA systems engineer
相关产品推荐
相关产品推荐

