0

既存の MS Word 2007 ファイル (.docx) を読み取り、string1 を string2 に置き換えてから、「新しく編集した」ファイルを電子メールの添付ファイルとして「その場で」添付する必要があります。

Microsoft DocumentFormat.OpenXml SDK の v2.0 と .NET 4.5 (C#) を使用しています。

これは私を困惑させました:

  1. 元のファイルを編集せずに実行しようとしています。また
  2. 元のファイルをコピーして編集する。また
  3. 新しいファイルをディスクに保存する (そして削除する); また
  4. ファイル形式を .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
        }

乾杯

カイル

4

1 に答える 1

0

私はこれを試しませんでしたが、Attachment クラスの 1 つのコンストラクターがストリームを受け入れます。http://msdn.microsoft.com/en-us/library/6sdktyws(v=vs.110).aspxを見てください。

于 2013-11-17T00:51:59.697 に答える