У меня есть требование прочитать существующий файл MS Word 2007 (.docx), заменить string1 на строку2, а затем прикрепить " недавно измененный "файл в виде вложения по электронной почте" на лету ".Чтение файла .DOCX с диска, его редактирование, а затем прикрепление к электронной почте на лету с использованием .NET.
Мы используем v2.0 от Microsoft DocumentFormat.OpenXml SDK и .NET 4.5 (C#)
Это тупик меня, потому что:
- Я пытаюсь сделать это без editting исходный файл ; или
- Копирование оригинального файла, а затем его редактирование; или
- Сохранение нового файла на диск (а затем его удаление); или
- Изменение формата файла, например. к .XML
Следующий код взят из другого вопроса stackoverflow, но работает с редактированием файла orignal на диске.
Я застрял в том, как передать documentText в конструктор вложения как MemoryStream. Созданное электронное письмо повреждено и больше, чем размер файла orignal. Я попытался 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
}
Приветствиях
Kyle