如何使用 Microsoft.Office.Interop.Word 库删除输出中的段落间距

How to remove paragraph spacing in output using the Microsoft.Office.Interop.Word Library

在我的 C# 桌面应用程序中,我使用 Microsoft.Office.Interop.Word 库写入 word 文件。但是每当它完成导出时,段落之间就会有很大的空间。使用 paragraph1.Range.ParagraphFormat.SpaceAfter = 0; 参数也不会影响结果。 我想要的结果是 Word 中的 "No Spacing" 预设,但经过一些研究后我发现它不是这个库的选项。 有什么方法可以删除或设置段落之间的间距。 这是我的代码:

 Microsoft.Office.Interop.Word.Application word = new Application();
 word.Visible = false;
 var doc = word.Documents.Add();
 var paragraph1 = doc.Content.Paragraphs.Add();

 paragraph1.Range.Font.Name = "Calibri";
 paragraph1.Range.Font.Size = 11;

 paragraph1.Range.ParagraphFormat.SpaceBefore = 0;
 paragraph1.Range.ParagraphFormat.SpaceAfter = 0;

 paragraph1.Range.Text = story;
 paragraph1.Range.InsertParagraphAfter();

 doc.SaveAs2(@"F:\Documents\Visual Studio Projects\LITPC\LITPC\bin\Debug\"+title+".docx");

 word.Quit();

首先,SpaceBeforeSpaceAfter 属性采用浮点数,因此您需要在值后加上 f。 尝试:paragraph1.SpaceBefore = 0.0f;,对我有用。

此外,插入新段落时请注意重新设置间距,因为后续段落将继承新间距。

或者如果可以的话,完全避免使用 Interop Word,这是一个又深又黑的兔子洞,我已经沉迷了好几天了。

我通过更改上一段中的 Word.Paragraph.SpaceAfter 参数解决了这个问题。例如。

// First Paragraph
Word.Paragraph mainTitle = document.Paragraphs.Add();
mainTitle.Range.Text = "para1";
mainTitle.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
mainTitle.Range.InsertParagraphAfter();
mainTitle.SpaceAfter = 0.0f;

// Second Paragraph
Word.Paragraph semiTitle = document.Paragraphs.Add();
semiTitle.Range.Text = "para2";
semiTitle.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
semiTitle.Range.InsertParagraphAfter();
semiTitle.SpaceAfter = 10.0f;

所以,semiTitleSpaceAfter会是0。同理,semiTitle之后的下一段SpaceAfter会是10。