0

我需要阅读现有的 MS Word 2007 文件 (.docx),将 string1 替换为 string2,然后将“新编辑”文件作为附件附加到“即时”电子邮件中。

我们正在使用 Microsoft DocumentFormat.OpenXml SDK 的 v2.0 和 .NET 4.5 (C#)

这让我很难过,因为:

  1. 我试图在不编辑原始文件的情况下这样做;或者
  2. 复制原始文件,然后编辑它;或者
  3. 将新文件保存到磁盘(然后将其删除);或者
  4. 将文件格式更改为 .XML

以下代码取自另一个 stackoverflow 问题,但适用于编辑磁盘上的原始文件。

我不知道如何将 documentText 作为 MemoryStream 传递给附件构造函数。生成的电子邮件已损坏,并且比原始文件大小大得多。我已经尝试过 GzipStream 并没有高兴:-(

        string sourceFilePath = @"C:\Template.docx";           

        string documentText;

        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(sourceFilePath, true))
        {
            using (StreamReader reader = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
            {
                documentText = reader.ReadToEnd();
            }

            documentText = documentText.Replace("searchstring", "replacementstring");

            using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
            {
                sw.Write(documentText);
            }
           MailMessage email = new MailMessage();
           email.Attachments.Add(new Attachment(sourceFilePath));
           // Send email etc
        }

干杯

凯尔

4

1 回答 1

0

我没有尝试过,但是 Attachment 类的一个构造函数接受一个流。看看http://msdn.microsoft.com/en-us/library/6sdktyws(v=vs.110).aspx

于 2013-11-17T00:51:59.697 回答