如何使用 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();
首先,SpaceBefore
和 SpaceAfter
属性采用浮点数,因此您需要在值后加上 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;
所以,semiTitle
的SpaceAfter
会是0。同理,semiTitle
之后的下一段SpaceAfter
会是10。
在我的 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();
首先,SpaceBefore
和 SpaceAfter
属性采用浮点数,因此您需要在值后加上 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;
所以,semiTitle
的SpaceAfter
会是0。同理,semiTitle
之后的下一段SpaceAfter
会是10。