2012-11-10 2 views
1

나는 병합 필드를 사용하여 사용자를 위해 사용자 정의하여 템플리트에서 워드 문서를 생성 중입니다. 예 : 이름 : "사용자 이름". 지금 그때Word 문서를 서버에 저장하지 않고 열 수있는 방법은 무엇입니까?

object miss = System.Reflection.Missing.Value; 
      object oDocName = "C:\\Users\\admin\\Desktop\\test002.doc"; 
      wordDoc.SaveAs(ref oDocName, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); 
      ((_Application)wordApp).Quit(ref miss, ref miss, ref miss); 

를 사용하여 서버에 문서를 저장, 나는 다운로드 문서 사용할 수 있도록 :

protected void download_Click(object sender, EventArgs e) 
{ 
    FileStream fileStream = new FileStream("C:\\Users\\ebimbari\\Desktop\\test002.doc", FileMode.Open); 

    int fileSize = (int)fileStream.Length; 
    byte[] Buffer = new byte[fileSize]; 

    fileStream.Read(Buffer, 0, fileSize); 
    fileStream.Close(); 

    Response.ContentType = ContType("C:\\Users\\admin\\Desktop\\test002.doc"); 
    Response.BinaryWrite(Buffer); 
    Response.AddHeader("content-disposition", "attachment;filename=\"" + "form" + ".doc"); 
    Response.End(); 
} 

문제는 내가 양식이에 저장하지 않는다는 것입니다 섬기는 사람. 다운로드 할 수있는 문서를 직접 열 수 있습니까? 사용하고 있습니다 Microsoft.Office.Interop.Word

감사합니다.

+0

복제를 : http://stackoverflow.com/questions/13227828/how-i-can-create-microsoft-office-interop-word-document-object -from-byte-array –

+0

@Rikoshay 엄청난 양의 파일로 작업 할 것이기 때문에 이것은 내 경우가 아닙니다. –

+0

다운로드 한 후 저장하고 삭제할 수 있습니까? – MikeSmithDev

답변

2

사용하여 마법 IsolatedStorageFile

편집 : '실제로 하드 디스크에 저장하지 않고, 파일의 지속적인 카피를하는 방법'입니다에 대한 답변 - 마법의 IsolatedStorageFile를 사용합니다.

('마술'이라는 단어는 생략 할 수 있습니다.)

이 코드를 테스트 할 수 없으며 worddoc.SaveAs(...)이 어떻게 동작하는지 확신 할 수 없습니다. 테스트 및 알려 주시기 바랍니다 :

private static readonly string CACHE = @"MyWordCache"; 

    static void PutFile(object wordDoc, string fname) 
    { 
     using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      if (!store.DirectoryExists(CACHE)) 
       store.CreateDirectory(CACHE); 

      object fullname = Path.Combine(CACHE, fname); 
      wordDoc.SaveAs(ref fullname, ...); 
     } 
    } 

    protected bool Downloadfile(string fname) 
    { 
     using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      if (!store.DirectoryExists(CACHE)) 
       return false; 

      var fullname = Path.Combine(CACHE, fname); 
      using (var fileStream = store.OpenFile(fullname, FileMode.Open)) 
      { 
       int fileSize = (int)fileStream.Length; 
       byte[] Buffer = new byte[fileSize]; 

       fileStream.Read(Buffer, 0, fileSize); 

       Response.ContentType = ContType(fullname); 
       Response.BinaryWrite(Buffer); 
       Response.AddHeader("content-disposition", "attachment;filename=\"" + "form" + ".doc"); 
       Response.End(); 
      } 
     } 
     return true; 
    } 
+0

좀 더 정확하게 말씀해 주시겠습니까? –

+0

마술은 어떻게 작동합니까? –

관련 문제