我需要阅读现有的 MS Word 2007 文件 (.docx),将 string1 替换为 string2,然后将“新编辑”文件作为附件附加到“即时”电子邮件中。
我们正在使用 Microsoft DocumentFormat.OpenXml SDK 的 v2.0 和 .NET 4.5 (C#)
这让我很难过,因为:
- 我试图在不编辑原始文件的情况下这样做;或者
- 复制原始文件,然后编辑它;或者
- 将新文件保存到磁盘(然后将其删除);或者
- 将文件格式更改为 .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
}
干杯
凯尔