Joh*_*aum 7 c# ms-word word-automation openxml
我正在寻找一种方法,使用openxml在word doc中的书签后插入一些文本.到目前为止,我已经能够使用以下内容找到书签:
var bookmarks = mainPart.Document.Descendants<BookmarkStart>().ToList();
var bookMarkToWriteAfter = bookmarks.FirstOrDefault(bm => bm.Name == insertAfterBoomark.Name);
Run Code Online (Sandbox Code Playgroud)
单词doc中的这个书签是doc中两行的选择.我必须在两行选择后立即插入一些文本.我试图使用以下内容插入文本:
var run = new Run();
run.Append(new Text("Hello World"));
bookMarkToWriteAfter .Parent.InsertAfterSelf(run);
mainPart.Document.Save();
Run Code Online (Sandbox Code Playgroud)
然而,这不会产生期望的结果.有没有人知道使用openxml在word文档中的书签后插入文本的正确方法?
运用
bookMarkToWriteAfter.Parent.InsertAfterSelf(run);
Run Code Online (Sandbox Code Playgroud)
您正在尝试直接使用XML,这对于OpenXML并不总是可取的.
试试这个..
Body body = mainPart.Document.GetFirstChild<Body>();
var paras = body.Elements<Paragraph>();
//Iterate through the paragraphs to find the bookmarks inside
foreach (var para in paras)
{
var bookMarkStarts = para.Elements<BookmarkStart>();
var bookMarkEnds = para.Elements<BookmarkEnd>();
foreach (BookmarkStart bookMarkStart in bookMarkStarts)
{
if (bookMarkStart.Name == bookmarkName)
{
//Get the id of the bookmark start to find the bookmark end
var id = bookMarkStart.Id.Value;
var bookmarkEnd = bookMarkEnds.Where(i => i.Id.Value == id).First();
var runElement = new Run(new Text("Hello World!!!"));
para.InsertAfter(runElement, bookmarkEnd);
}
}
}
mainPart.Document.Save();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8119 次 |
| 最近记录: |