2013-06-10 1 views
0

템플릿으로 사용하려는 프로젝트 폴더 중 하나에 워드 문서 (.docx)를 보관했습니다.
이 템플릿에는 사용자의 사용자 지정 머리글과 바닥 글 줄이 들어 있습니다. 사용자가 자신의 데이터를 워드 형식으로 다운로드 할 수 있도록 돕고 싶습니다. 이를 위해 사용자 데이터를 수락하고 템플릿을 참조하는 함수를 작성하여 템플릿의 자리 표시자를 대체하는 새 단어 파일을 만든 다음 새 파일을 서버에 저장하지 않고 반환합니다. 이는 템플리트가 그대로 템플리트로 유지되어야 함을 의미합니다.MVC 템플릿에서 워드 파일을 만들고 다운로드하십시오.

다음은 내가 시도하는 것입니다. 자리 표시자를 대체 할 수있었습니다. 그러나, 나는 사용자에게 다운로드 가능한 파일로 작성된 컨텐츠를 제공하는 방법을 알고 있지 않습니다. 새로운 콘텐츠를 서버에 다시 다른 단어 파일로 저장하고 싶지 않습니다.

public void GenerateWord(string userData) 
    { 
     string templateDoc = HttpContext.Current.Server.MapPath("~/App_Data/Template.docx"); 

     // Open the new Package 
     Package pkg = Package.Open(templateDoc, FileMode.Open, FileAccess.ReadWrite); 

     // Specify the URI of the part to be read 
     Uri uri = new Uri("/word/document.xml", UriKind.Relative); 
     PackagePart part = pkg.GetPart(uri); 

     XmlDocument xmlMainXMLDoc = new XmlDocument(); 
     xmlMainXMLDoc.Load(part.GetStream(FileMode.Open, FileAccess.Read)); 

     xmlMainXMLDoc.InnerXml = ReplacePlaceHoldersInTemplate(userData, xmlMainXMLDoc.InnerXml); 

     // Open the stream to write document 
     StreamWriter partWrt = new StreamWriter(part.GetStream(FileMode.Open, FileAccess.Write)); 
     xmlMainXMLDoc.Save(partWrt); 

     partWrt.Flush(); 
     partWrt.Close(); 
     pkg.Close(); 
    } 


    private string ReplacePlaceHoldersInTemplate(string toReplace, string templateBody) 
    { 
     templateBody = templateBody.Replace("#myPlaceHolder#", toReplace); 
     return templateBody; 
    } 

아래의 내용은 필자가 원치 않는 템플릿 파일 자체의 내용을 저장하고 있다고 생각합니다.

xmlMainXMLDoc.Save (partWrt);

새로운 콘텐츠를 다운로드 할 수있는 단어 파일로 사용자에게 반환 할 수있는이 코드를 어떻게 수정해야합니까?

답변

0

솔루션을 찾았습니다. Here!

이 코드를 통해 템플릿 파일을 읽고 원하는대로 수정 한 다음 다운로드 가능한 첨부 파일로 응답을 보낼 수 있습니다.