0
的書籤我打開文檔模板(DOTX),然後追加另一個文檔。兩者都有書籤。使用下面的代碼片段找不到來自OpenXML附加文檔
Dim m_word As WordprocessingDocument = = WordprocessingDocument.Open("FrontPage.dotx", True)
Dim altChunkId As String = "ChunkId1"
Dim mainPart As MainDocumentPart = m_word.MainDocumentPart
Dim chunk As AlternativeFormatImportPart = mainPart.AddAlternativeFormatImportPart(
DocumentFormat.OpenXml.Packaging.AlternativeFormatImportPartType.WordprocessingML, altChunkId)
Using fileStream As IO.FileStream = IO.File.Open("Appendix.dotx", IO.FileMode.Open)
chunk.FeedData(fileStream)
End Using
Dim altChunk As AltChunk = New DocumentFormat.OpenXml.Wordprocessing.AltChunk()
altChunk.Id = altChunkId
mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.Elements(Of DocumentFormat.OpenXml.Wordprocessing.Paragraph).Last())
mainPart.Document.Save()
現在,如果我嘗試循環槽所有書籤這樣的:
Dim docbody As Body = doc.GetFirstChild(Of Body)()
For Each bookmarkStart As BookmarkStart In docbody.Descendants(Of BookmarkStart)()
' Do something with the bookmarks
Next
我只得到原frontpage.dotx的書籤,沒有appendix.dotx的書籤被發現。 如果我將文檔保存到文件中,當我用Word打開文檔時,所有書籤都在那裏。我也可以重新打開我保存的文件,然後使用上面的For Each循環找到所有的書籤。問題是,如何在不保存並重新加載文檔的情況下追加所有書籤?
謝謝。我做了第一個選擇。打開每個文檔,在書籤上插入文本並將它們保存爲臨時文件。最後,我將所有修改過的文檔合併爲一個。這比在內存中做所有的事情要慢一些,但對我來說它的速度足夠快。 – nivs1978
嗯。我的意思是你可以使用Open XML來做到這一點。沒有理由不能使用Open XML SDK打開多個文檔,替換書籤,然後使用AltChunk將其合併。 –