내 지정된 패턴 텍스트 {pattern}을 포함하는 단어 파일을 가지고 있으며이 패턴을 데이터베이스에서 읽은 새 문자열로 바꾸려고합니다. 그래서 열린 xml을 사용하여 내 docx 템플릿 파일에서 스트림을 바꾼 다음 패턴 파일을 다운로드하지 않고 임시 파일을 만들지 않고 스트림으로 반환했습니다. 하지만 내가 열 때 그것은 나를 docx 파일에 오류가 발생했습니다. 다음은 대신 워드 파일에서 텍스트를 읽은 다음 다시 원래의 파일에 데이터를 기록하는 예상 패턴 텍스트를 대체 나에게 어떤 솔루션을 제안하십시오 내 예제 코드Open XML은 단어 파일의 텍스트를 대체하고 MVC를 사용하여 메모리 스트림을 반환합니다.
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 파일 형식으로 메모리 스트림으로 어떻게 되돌릴 수 있습니까?