既存の MS Word 2007 ファイル (.docx) を読み取り、string1 を string2 に置き換えてから、「新しく編集した」ファイルを電子メールの添付ファイルとして「その場で」添付する必要があります。
Microsoft DocumentFormat.OpenXml SDK の v2.0 と .NET 4.5 (C#) を使用しています。
これは私を困惑させました:
- 元のファイルを編集せずに実行しようとしています。また
- 元のファイルをコピーして編集する。また
- 新しいファイルをディスクに保存する (そして削除する); また
- ファイル形式を .XML などに変更する
次のコードは、別のスタックオーバーフローの質問から取得したものですが、ディスク上の元のファイルの編集で機能します。
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
}
乾杯
カイル