You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NPOI移除Word生成过程中段落间的多余行间距

你遇到的段落多余间距问题主要由两个常见配置遗漏导致:一是行间距规则使用了AUTO模式,会根据Word默认规则自动补充间距;二是没有关闭Word默认开启的「段落与文档网格对齐」设置,哪怕手动设了段前/段后间距为0,也会生成额外留白。

修改后的配置代码

private static void SetParagraphRunSettings(XWPFRun paragraphRun)
{
    paragraphRun.FontSize = 7;
    paragraphRun.FontFamily = "Courier New";
    paragraphRun.IsBold = true;
}

private static void SetParagraphSettings(XWPFParagraph paragraph, string stepComment)
{
    if (stepComment.Contains("Landscate -"))
    {
        paragraph.IndentationFirstLine = 0;
        paragraph.FirstLineIndent = 0;
        paragraph.IndentationLeft = 1; 
        paragraph.IndentationHanging = 1;
    }
    paragraph.Alignment = ParagraphAlignment.LEFT;
    paragraph.IndentationRight = 0;
    // 显式关闭所有段前段后间距,包含按行、按磅两种计算规则
    paragraph.SpacingBefore = 0;
    paragraph.SpacingAfter = 0;
    paragraph.SpacingBeforeLines = 0;
    paragraph.SpacingAfterLines = 0;
    // 用SINGLE规则固定单倍行距,替代AUTO避免自动扩容
    paragraph.setSpacingBetween(1, LineSpacingRule.SINGLE);
    // 关闭段落对齐文档网格的默认配置,消除额外留白
    var pPr = paragraph.GetCTP().IsSetPPr() ? paragraph.GetCTP().pPr : paragraph.GetCTP().AddNewPPr();
    var snapToGrid = pPr.IsSetSnapToGrid() ? pPr.snapToGrid : pPr.AddNewSnapToGrid();
    snapToGrid.val = ST_OnOff.Off;
}

额外检查项

  • 如果你是基于现有Word模板生成文件,需要提前把模板默认段落样式的段前、段后间距设为0,同时关闭对齐网格选项,避免新段落继承默认样式
  • 确认文本追加逻辑是在同一个段落内新增XWPFRun,而非每添加一行文本就新建一个XWPFParagraph,避免不必要的段落分隔间距

内容的提问来源于stack exchange,提问作者Juan Carlos Torres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:54:02