1
考慮到MS Word的「跟蹤更改」模式,是否有任何方法可以使用庫DocumentFormat.OpenXML
合併2個word文檔。 或者也許有可能使用另一個庫?使用DocumentFormat.OpenXml合併word文檔(c#)
考慮到MS Word的「跟蹤更改」模式,是否有任何方法可以使用庫DocumentFormat.OpenXML
合併2個word文檔。 或者也許有可能使用另一個庫?使用DocumentFormat.OpenXml合併word文檔(c#)
您可以使用微軟Word
Microsoft.Office.Interop.Word.Document worddoc;
Microsoft.Office.Interop.Word.Application wordApp;
Microsoft.Office.Interop.Word.Range _range;
object file = "1.doc";
wordApp = new Microsoft.Office.Interop.Word.Application();
worddoc = wordApp.Documents.Open(ref file);
_range = worddoc.Content;
Microsoft.Office.Interop.Word.Range rng = _range;
rng.Start = rng.End;
rng.InsertFile("2.doc");
編輯
的非標準API和閱讀本Merging-Word-Documents
EDIT2
所以試試這個
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
....
public byte[] OpenAndCombine(List<string> FileNames)
{
List<byte[]> documents = new List<byte[]>();
foreach (string _FileName in FileNames)
documents.Add(File.ReadAllBytes(_FileName));
MemoryStream mainStream = new MemoryStream();
mainStream.Write(documents[0], 0, documents[0].Length);
mainStream.Position = 0;
int pointer = 1;
byte[] ret;
using (WordprocessingDocument mainDocument = WordprocessingDocument.Open(mainStream, true))
{
XElement newBody = XElement.Parse(mainDocument.MainDocumentPart.Document.Body.OuterXml);
for (pointer = 1; pointer < documents.Count; pointer++)
{
WordprocessingDocument tempDocument = WordprocessingDocument.Open(new MemoryStream(documents[pointer]), true);
XElement tempBody = XElement.Parse(tempDocument.MainDocumentPart.Document.Body.OuterXml);
newBody.Add(tempBody);
mainDocument.MainDocumentPart.Document.Body = new Body(newBody.ToString());
mainDocument.MainDocumentPart.Document.Save();
mainDocument.Package.Flush();
}
}
ret = mainStream.ToArray();
mainStream.Close();
mainStream.Dispose();
return (ret);
}
我想避免使用庫Interop – Aishi 2012-04-27 08:13:12
我明白爲什麼)))但你問「可能使用另一個庫?」 – Likurg 2012-04-27 08:15:50
是的,我提出的問題並不完全準確)) 是否有任何其他庫使用它可以完成? (不包括Interop庫)如果這是唯一的方法 - 我非常難過這個:( – Aishi 2012-05-02 08:45:20