У меня есть файл слов, который содержит текст указанного шаблона {pattern}, и я хочу заменить этот шаблон новой строкой, прочитанной из базы данных. Поэтому я использовал открытый поток чтения xml из моего файла шаблона docx, заменив строку моего шаблона, а затем вернулся к потоку, который поддерживает загрузку файла без создания временного файла. Но когда я открыл, это вызвало у меня ошибку в файле docx. Ниже приведен пример кода
public ActionResult SearchAndReplace(string FilePath)
{
MemoryStream mem = new MemoryStream(System.IO.File.ReadAllBytes(FilePath));
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true))
{
string docText = null;
using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
Regex regexText = new Regex("Hello world!");
docText = regexText.Replace(docText, "Hi Everyone!");
//Instead using this code below to write text back the original file. I write new string back to memory stream and return to a stream download file
//using (StreamWriter sw = new //StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
//{
// sw.Write(docText);
//}
using (StreamWriter sw = new StreamWriter(mem))
{
sw.Write(docText);
}
}
mem.Seek(0, SeekOrigin.Begin);
return File(mem, "application/octet-stream","download.docx"); //Return to download file
}
Пожалуйста, предложите мне любые решения, вместо этого прочитайте текст из файла слова и замените этот ожидаемый текстовый шаблон, а затем запишите данные обратно в исходный файл. Есть ли какие-либо решения заменить текст с библиотекой WordprocessingDocument? Как я могу вернуться в поток памяти с проверкой формата файла docx?