C# Word Interop 在段落中添加底部边框会创建一个换行符,我想去掉它
C# Word Interop adding bottom border to paragraph creates a newline I want to get rid of
我正在尝试为文本添加底部边框,以便在其下方创建一条水平线。插入行没问题,但我之前得到一个换行符,不知道如何摆脱它。
我想在我的文本正下方插入该行,并在它之后的新行中找到光标。
有人知道怎么做吗?
这是我目前正在使用的代码:
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\endofdoc";
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = false;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
oDoc.PageSetup.TopMargin = 36;
oDoc.PageSetup.RightMargin = 36;
oDoc.PageSetup.BottomMargin = 36;
oDoc.PageSetup.LeftMargin = 36;
Word.Paragraph titolo;
object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
titolo = oDoc.Content.Paragraphs.Add(ref oRng);
titolo.Range.Text = "My text";
titolo.Range.Font.Name = "Open Sans";
titolo.Range.Font.Size = 16;
titolo.Range.Font.Italic = 0;
titolo.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
titolo.Format.SpaceAfter = 24;
titolo.Range.InsertParagraphAfter();
Word.Paragraph section1_title;
oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
section1_title = oDoc.Content.Paragraphs.Add(ref oRng);
section1_title.Range.Text = "Text I want a line under";
section1_title.Range.Borders[Word.WdBorderType.wdBorderBottom].LineStyle = Word.WdLineStyle.wdLineStyleSingle;
section1_title.Range.Font.Name = "Open Sans";
section1_title.Range.Font.Size = 12;
section1_title.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
section1_title.Range.InsertParagraphAfter();
oWord.Visible = true;
为了让事情更清楚,here is what I get and here is what I want。请注意,在第一张图片中,我在文本和行之间有一条可写行(就像我在“我的文本”的末尾有一个 \n)。
我也试过trim正文。
感谢所有回答者。
编辑:这是 file 生成的 (GoogleDrive link)
EDIT2:发布完整代码。工作需要 Microsoft.Office.Interop.Word 程序集引用和 using Word = Microsoft.Office.Interop.Word;
我找到了解决我的问题的方法:基本上我获取了段落范围的文本并检查是否有空行,如果我找到它,我将其删除。
这是我在帖子末尾添加的代码:
if (section1_title.Range.Text.Trim() == string.Empty)
{
section1_title.Range.Select();
oWord.Selection.Delete();
}
我不确定这是执行此操作的最佳方法,或者我是否可以做其他事情,但是,唉,它正在工作。
我正在尝试为文本添加底部边框,以便在其下方创建一条水平线。插入行没问题,但我之前得到一个换行符,不知道如何摆脱它。 我想在我的文本正下方插入该行,并在它之后的新行中找到光标。
有人知道怎么做吗?
这是我目前正在使用的代码:
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\endofdoc";
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = false;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
oDoc.PageSetup.TopMargin = 36;
oDoc.PageSetup.RightMargin = 36;
oDoc.PageSetup.BottomMargin = 36;
oDoc.PageSetup.LeftMargin = 36;
Word.Paragraph titolo;
object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
titolo = oDoc.Content.Paragraphs.Add(ref oRng);
titolo.Range.Text = "My text";
titolo.Range.Font.Name = "Open Sans";
titolo.Range.Font.Size = 16;
titolo.Range.Font.Italic = 0;
titolo.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
titolo.Format.SpaceAfter = 24;
titolo.Range.InsertParagraphAfter();
Word.Paragraph section1_title;
oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
section1_title = oDoc.Content.Paragraphs.Add(ref oRng);
section1_title.Range.Text = "Text I want a line under";
section1_title.Range.Borders[Word.WdBorderType.wdBorderBottom].LineStyle = Word.WdLineStyle.wdLineStyleSingle;
section1_title.Range.Font.Name = "Open Sans";
section1_title.Range.Font.Size = 12;
section1_title.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
section1_title.Range.InsertParagraphAfter();
oWord.Visible = true;
为了让事情更清楚,here is what I get and here is what I want。请注意,在第一张图片中,我在文本和行之间有一条可写行(就像我在“我的文本”的末尾有一个 \n)。
我也试过trim正文。
感谢所有回答者。
编辑:这是 file 生成的 (GoogleDrive link)
EDIT2:发布完整代码。工作需要 Microsoft.Office.Interop.Word 程序集引用和 using Word = Microsoft.Office.Interop.Word;
我找到了解决我的问题的方法:基本上我获取了段落范围的文本并检查是否有空行,如果我找到它,我将其删除。
这是我在帖子末尾添加的代码:
if (section1_title.Range.Text.Trim() == string.Empty)
{
section1_title.Range.Select();
oWord.Selection.Delete();
}
我不确定这是执行此操作的最佳方法,或者我是否可以做其他事情,但是,唉,它正在工作。