मुझे लगता है कि यह है, क्योंकि आप एक दस्तावेज है कि एक स्मृति धारा से खोला जाता है में एक AltChunk
आयात नहीं कर सकते। मेरी भी यही समस्या थी। मैं बहुत की तरह एक स्मृति धारा से टेम्पलेट खोलने गया था:
Private Sub UpdateDoc(templatePath As String)
Using fs As FileStream = File.OpenRead(templatePath)
Using ms As New MemoryStream
CopyStream(fs, ms)
Using doc As WordprocessingDocument = WordprocessingDocument.Open(ms, True)
'update the document
doc.MainDocumentPart.Document.Save()
End Using
End Using
End Using
End Sub
Private Sub CopyStream(source As Stream, target As Stream)
Dim buffer() As Byte
Dim bytesRead As Integer = 1
ReDim buffer(32768)
While bytesRead > 0
bytesRead = 0
bytesRead = source.Read(buffer, 0, buffer.Length)
target.Write(buffer, 0, bytesRead)
End While
End Sub
यह सामग्री नियंत्रण आदि के सामान्य अद्यतन के लिए काम करता है और जब वापस ग्राहक के लिए ही स्ट्रीम या docx के रूप में सहेजा दस्तावेज़ ठीक है। लेकिन यह दस्तावेज़ भ्रष्ट जब एक AltChunk
डालने।
एक भौतिक फ़ाइल पथ से कोई दस्तावेज़ खुलने का काम करता है जब इतनी तरह AltChunk
डालने:
Using doc As WordprocessingDocument = WordprocessingDocument.Open(strTempFile, True)
Dim altChunkId As String = "AltChunkId1"
Dim mainDocPart As MainDocumentPart = doc.MainDocumentPart
Dim chunk As AlternativeFormatImportPart = mainDocPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.Xhtml,
altChunkId)
Dim strHTML As String = "<html><head/><body><h1>Html Heading</h1><p>This is an html document in a string literal.</p></body></html>"
Using chunkStream As Stream = chunk.GetStream(FileMode.Create, FileAccess.Write)
Using sr As StreamWriter = New StreamWriter(chunkStream)
sr.Write(strHTML)
End Using
End Using
Dim altChunk As New AltChunk
altChunk.Id = altChunkId
mainDocPart.Document.Body.InsertAfter(altChunk, mainDocPart.Document.Body.Elements(Of Paragraph)().Last())
mainDocPart.Document.Save()
End Using
ऐसा लगता है कि आप एक स्मृति धारा में एक AltChunk
आयात नहीं कर सकते, तो आप इसे केवल कर सकते हैं जब आप के लिए भौतिक फ़ाइल को खोलने के लिख रहे हैं। क्या कोई इस मामले पर कुछ प्रकाश डाल सकता है?
: आपका उत्तर बहुत उपयोगी है। क्या आप मुझे मेरी समस्या के लिए एक टिप दे सकते हैं ... शब्द दस्तावेज़ में एचटीएमएल डेटा खिलाए जाने के बजाय, मैं संबंधित एचटीएमएल डेटा के लिए ओओएक्सएमएल स्वरूपित स्ट्रिंग प्राप्त करना चाहता हूं। अपडेट करने की आवश्यकता नहीं है। शब्द document.i केवल ओक्सएमएल स्वरूपित स्ट्रिंग चाहते हैं ... – Saravanan