c# 在 word (docx) 中添加文本并应用样式
c# Add text in word (docx) and apply styles
我希望通过将标题与文本分开来向 Word 文档添加文本。添加标题时,我想应用适当的样式。
这是我所做的:
private void Add_Text_To_Word()
{
string file_location = @"D:\Bureau\my_word.docx";
string my_title = "TITLE TITLE TITLE";
string my_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(file_location);
app.Visible = true;
object missing = System.Reflection.Missing.Value;
object oEndOfDoc = "\endofdoc"; // endofdoc is a predefined bookmark
int page = 0;
while (page < 3) // For 3 pages (1 title + 1 text + 1 page break)
{
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
Word.Range rngEndOfDoc = doc.Bookmarks[oEndOfDoc].Range;
rngEndOfDoc.InsertAfter("\n");
rngEndOfDoc.Collapse(ref oCollapseEnd);
rngEndOfDoc.Text = my_title;
rngEndOfDoc.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);
doc.Paragraphs.Add(rngEndOfDoc);
Word.Range rngEndOfDoc2 = doc.Bookmarks[oEndOfDoc].Range;
rngEndOfDoc.InsertAfter("\n");
rngEndOfDoc.Collapse(ref oCollapseEnd);
rngEndOfDoc2.Text = Environment.NewLine + my_text;
rngEndOfDoc2.set_Style(Word.WdBuiltinStyle.wdStyleBodyText);
doc.Paragraphs.Add(rngEndOfDoc2);
doc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak);
page++;
} // -------------------------
}
这是结果:
Result
但这就是我想要做的:
Wanted
谢谢你的帮助!
有解决办法:
// Title
Word.Paragraph oPara2;
object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara2.Range.Text = title;
oPara2.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);
oPara2.Range.InsertParagraphAfter();
// Text
Word.Paragraph oPara3;
oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara3.Range.Text = text;
oPara3.set_Style(Word.WdBuiltinStyle.wdStyleBodyText);
oPara3.Range.InsertParagraphAfter();
// Page break
oDoc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak);
我必须在 文本后 设置样式。
这不工作:
// Title
Word.Paragraph oPara2;
object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara2.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);
oPara2.Range.Text = title;
oPara2.Range.InsertParagraphAfter();
我希望通过将标题与文本分开来向 Word 文档添加文本。添加标题时,我想应用适当的样式。
这是我所做的:
private void Add_Text_To_Word()
{
string file_location = @"D:\Bureau\my_word.docx";
string my_title = "TITLE TITLE TITLE";
string my_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(file_location);
app.Visible = true;
object missing = System.Reflection.Missing.Value;
object oEndOfDoc = "\endofdoc"; // endofdoc is a predefined bookmark
int page = 0;
while (page < 3) // For 3 pages (1 title + 1 text + 1 page break)
{
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
Word.Range rngEndOfDoc = doc.Bookmarks[oEndOfDoc].Range;
rngEndOfDoc.InsertAfter("\n");
rngEndOfDoc.Collapse(ref oCollapseEnd);
rngEndOfDoc.Text = my_title;
rngEndOfDoc.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);
doc.Paragraphs.Add(rngEndOfDoc);
Word.Range rngEndOfDoc2 = doc.Bookmarks[oEndOfDoc].Range;
rngEndOfDoc.InsertAfter("\n");
rngEndOfDoc.Collapse(ref oCollapseEnd);
rngEndOfDoc2.Text = Environment.NewLine + my_text;
rngEndOfDoc2.set_Style(Word.WdBuiltinStyle.wdStyleBodyText);
doc.Paragraphs.Add(rngEndOfDoc2);
doc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak);
page++;
} // -------------------------
}
这是结果:
Result
但这就是我想要做的:
Wanted
谢谢你的帮助!
有解决办法:
// Title
Word.Paragraph oPara2;
object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara2.Range.Text = title;
oPara2.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);
oPara2.Range.InsertParagraphAfter();
// Text
Word.Paragraph oPara3;
oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara3.Range.Text = text;
oPara3.set_Style(Word.WdBuiltinStyle.wdStyleBodyText);
oPara3.Range.InsertParagraphAfter();
// Page break
oDoc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak);
我必须在 文本后 设置样式。
这不工作:
// Title
Word.Paragraph oPara2;
object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara2.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);
oPara2.Range.Text = title;
oPara2.Range.InsertParagraphAfter();