在我的C#桌面应用程序中,我正在使用Microsoft.Office.Interop.Word
库来写入word文件。但是,只要导出完成,各段之间就会有巨大的空间。使用paragraph1.Range.ParagraphFormat.SpaceAfter = 0;
参数也不会影响结果。
我想要的结果是Word中预设的“无间距”,但是经过一番研究,我发现该库不是一个选项。
有什么方法可以删除或设置段落之间的间距。
这是我的代码:
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();
答案 0 :(得分:1)
我通过更改上一段中的 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;
因此,SpaceAfter
的 semiTitle
将为 0。类似地,SpaceAfter
之后的下一段的 semiTitle
将为 10。
答案 1 :(得分:0)
首先,SpaceBefore
和SpaceAfter
属性采用浮点数,因此您需要在值后加上f。
试试:paragraph1.SpaceBefore = 0.0f;
,对我有用。
此外,在插入新段落时,请小心重置间距,因为后续段落将继承新的间距。
或者,如果可以的话,请完全避免使用Interop Word,这是我已经呆了几天的深,黑,兔子洞。