如何使用 OpenXml 将新书签附加到 word 2010 中的现有段落?
How to attach a new bookmark to an existing paragraph in word 2010 using OpenXml?
在word文档中,我想为所有样式为"Heading 1"的段落设置书签。
如何使用 OpenXml 将新书签插入现有段落?
要做到这一点,您必须:
- 查找所有段落
- 检查段落是否为带有 Heading1 的标题(您必须检查是否存在 paragraphStyleId () Inside a ParagraphProperties ( ... )
- 如果是 Heading1 样式的段落,请插入您的书签。
您应该可以使用像
这样的代码来做到这一点
int bookmarkId = 0;
// MyDocuments.Body is a WordProcessDocument.MainDocumentPart.Document.Body
foreach(Paragraph para in MyDocuments.Body.Descendants<Paragraph>())
{
// if the paragraph has no properties or has properties but no pStyle, it's not a "Heading1"
ParagraphProperties pPr = para.GetFirstChild<ParagraphProperties>();
if (pPr == null || pPr.GetFirstChild<ParagraphStyleId>() == null) continue;
// if the value of the pStyle is not Heading1 => skip the paragraph
if (pPr.GetFirstChild<ParagraphStyleId>().Val != "Heading1") continue;
// it's a paragraph with Heading1 style, insert the bookmark
// the bookmark must have a start and an end
// the bookmarkstart/end share the same id
BookmarkStart bms = new BookmarkStart() { Name = "yourbookmarkname", Id = bookmarkId.ToString() };
BookmarkEnd bme = new BookmarkEnd() { Id = bookmarkId.ToString() };
++bookmarkId;
// Insertion of bookmarkstart after the paragraphProperties
pPr.InsertAfterSelf(bms);
// The bookmarkend can be inserted after the bookmarkstart or after the object the bookmark must surrounding
// here we will insert it after bms. If you want to surround an object, find the object within the paragraph and insert it after
bms.InsertAfterSelf(bme);
有关书签 类 的更多信息,请点击此处:https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.bookmarkstart(v=office.14).aspx
在word文档中,我想为所有样式为"Heading 1"的段落设置书签。
如何使用 OpenXml 将新书签插入现有段落?
要做到这一点,您必须:
- 查找所有段落
- 检查段落是否为带有 Heading1 的标题(您必须检查是否存在 paragraphStyleId () Inside a ParagraphProperties ( ... )
- 如果是 Heading1 样式的段落,请插入您的书签。
您应该可以使用像
这样的代码来做到这一点 int bookmarkId = 0;
// MyDocuments.Body is a WordProcessDocument.MainDocumentPart.Document.Body
foreach(Paragraph para in MyDocuments.Body.Descendants<Paragraph>())
{
// if the paragraph has no properties or has properties but no pStyle, it's not a "Heading1"
ParagraphProperties pPr = para.GetFirstChild<ParagraphProperties>();
if (pPr == null || pPr.GetFirstChild<ParagraphStyleId>() == null) continue;
// if the value of the pStyle is not Heading1 => skip the paragraph
if (pPr.GetFirstChild<ParagraphStyleId>().Val != "Heading1") continue;
// it's a paragraph with Heading1 style, insert the bookmark
// the bookmark must have a start and an end
// the bookmarkstart/end share the same id
BookmarkStart bms = new BookmarkStart() { Name = "yourbookmarkname", Id = bookmarkId.ToString() };
BookmarkEnd bme = new BookmarkEnd() { Id = bookmarkId.ToString() };
++bookmarkId;
// Insertion of bookmarkstart after the paragraphProperties
pPr.InsertAfterSelf(bms);
// The bookmarkend can be inserted after the bookmarkstart or after the object the bookmark must surrounding
// here we will insert it after bms. If you want to surround an object, find the object within the paragraph and insert it after
bms.InsertAfterSelf(bme);
有关书签 类 的更多信息,请点击此处:https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.bookmarkstart(v=office.14).aspx