Откройте документ MS-Word с помощью OpenXML, измените и сохраните обратно в формат MS Word - PullRequest
0 голосов
/ 05 июля 2019

Hell All,

Мое требование - открыть документ Microsoft Word и изменить некоторое содержимое, а затем сохранить этот документ как Microsoft Word.

Для этого я использую OpenXML и добился этого, но после модификации, когда я сохраняю как новый документ, он работает, но я хочу изменить документ в виде потока Microsoft Word, чтобы я мог сохранить его на Amazon S3.

В приведенном ниже коде «fuFile» - это FileUploadControl, и я использую существующий документ Microsoft Word, который необходимо изменить.

 protected void btnSubmit_Click(object sender, EventArgs e)
{
    MemoryStream ms = new MemoryStream();
    fuFile.PostedFile.InputStream.CopyTo(ms);

    using (WordprocessingDocument document = WordprocessingDocument.Open(ms, true))
    {
        foreach (var para in document.MainDocumentPart.Document.Body.Elements<Paragraph>())
        {
            foreach (var run in para.Elements<Run>())
            {
                foreach (var text in run.Elements<Text>())
                {
                    if (text.Text.Contains("<content to find>"))
                    {
                        text.Text = "content to replace";
                    }
                }
            }
        }

        document.SaveAs(string.Format("d:\\modified_{0}.docx", DateTime.Now.Ticks));

        //using (var fileStream = File.Create(string.Format("d:\\modified_{0}.docx", DateTime.Now.Ticks)))
        //{
        //    using (StreamReader sr = new StreamReader(document.MainDocumentPart.GetStream()))
        //    {
        //        fileStream.Seek(0, SeekOrigin.Begin);
        //        sr.BaseStream.CopyTo(fileStream);
        //    }
        //}
    }
}

Здесь, когда я сохраняю измененный документ как новый документ, он отлично работает и открывается в Microsoft Word, но в коде комментария, где я создаю новый файл и копирую содержимое, файл сохраняется как .docx, но не открывается в Microsoft Word.

Есть идеи, как создать поток из измененного документа и сохранить его в Amazon S3, чтобы после загрузки он по-прежнему открывался в Microsoft word?

...