#c# #merge #openxml #document #word
Вопрос:
Я пытаюсь объединить 2 документа Word в двоичном формате, однако он получает только первый документ. В результирующий документ должны быть включены все элементы из каждого исходного документа с форматированием.
Вот код до сих пор. Кстати, используя OpenXML.
private static byte[] Merge(byte[] dest, byte[] src) { string altChunkId = "AltChunkId" DateTime.Now.Ticks.ToString(); var memoryStreamDest = new MemoryStream(); memoryStreamDest.Write(dest, 0, dest.Length); memoryStreamDest.Seek(0, SeekOrigin.Begin); using (WordprocessingDocument doc = WordprocessingDocument.Open(memoryStreamDest, true)) { MainDocumentPart mainPart = doc.MainDocumentPart; Paragraph para = new Paragraph(new Run((new Break() { Type = BreakValues.Page }))); mainPart.Document.Body.InsertAfter(para, mainPart.Document.Body.LastChild); //Insert the source file into the target file using AltChunk AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart( AlternativeFormatImportPartType.WordprocessingML, altChunkId); using (MemoryStream mem = new MemoryStream()) { mem.Write(src, 0, (int)src.Length); mem.Seek(0, SeekOrigin.Begin); chunk.FeedData(mem); } AltChunk altChunk = new AltChunk(); altChunk.Id = altChunkId; mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.Descendantslt;Paragraphgt;().Last()); mainPart.Document.Save(); return memoryStreamDest.ToArray(); } }
Комментарии:
1. Что именно вы подразумеваете под «слиянием»?
2. Вы также никогда не используете
altChunk
-предположительно, это непреднамеренно? Вы также неправильно сохраняете документ.3. Объединение 2 документов Word в один файл.
4. Верно, но как объединить? Должен ли результат содержать все элементы в документе 1, за которыми следуют все элементы в документе 2? Если да, то почему вы возитесь с альтернативными типами форматов? Что произойдет, если документы будут иметь разные стили и т. Д.? Это будет сложно, если в документах также есть списки, так как вам нужно управлять частью нумерации документа.
5. Именно это я и планирую сделать, чтобы оба элемента были включены в форматирование. У вас есть что порекомендовать? Спасибо!