使用WordprocessingDocument和MemoryStream创建文档

时间:2016-07-14 09:48:39

标签: c# openxml docx openxml-sdk word-addins

我正在使用以下代码使用Word模板中的OpenXML WordprocessingDocument创建一个MS Word文档。我正在使用Stream而不使用任何物理位置来获取新文档。使用OpenXML,可以在不使用物理的情况下创建文档location(仅限Stream)最后保存到某个位置?

我没有收到任何错误,并且成功创建了新文档,但新创建的文档已损坏,无法在MS Word中打开。

using (Stream stream1 = new FileStream("c:\\TestDoc.dotx", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) {
    using (WordprocessingDocument document = WordprocessingDocument.Open(stream1, true)) {
        document.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
        MainDocumentPart mainPart = document.MainDocumentPart;
        DocumentSettingsPart documentSettingPart1 = mainPart.DocumentSettingsPart;
        mainPart.Document.Save();

        Stream mystream =  mainPart.GetStream();                        
        FileStream fileStream = File.Create("c:\\newdoc.docx", (int)mystream.Length);
        byte[] bytesInStream = new byte[mystream.Length];
        mystream.Read(bytesInStream, 0, bytesInStream.Length);
        fileStream.Write(bytesInStream, 0, bytesInStream.Length);

        document.Close();
    }
}

0 个答案:

没有答案