2012-06-07 5 views
0

Word 문서 (비 XML)에 텍스트를 쓰고 파일에 저장하는 코드가 있습니다. 이제 문서를 만들고 사용자가 문서를 저장할 것인지 묻는 메시지를 수정하려고합니다. SaveFileDialog를 사용하여 동적으로 생성 된 워드 문서를 저장 하시겠습니까?

는 Word 문서 작성을위한 코드입니다

object miss = System.Reflection.Missing.Value; 
object Visible = true; 
object start1 = 0; 
object end1 = 0; 
Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application(); 
Document aDocument = WordApp.Documents.Add(ref miss, ref miss, ref miss, ref miss); 
Range rng = aDocument.Range(ref start1, ref miss); 

try 
{ 
    rng.Font.Name = "Georgia"; 
    rng.InsertAfter("Report Header!"); 
    object filename = @"C:\Users\test.doc"; 

    aDocument.SaveAs(ref filename, 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); 
    object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges; 
    object originalFormat = Microsoft.Office.Interop.Word.WdOriginalFormat.wdWordDocument; 
    object routeDocument = true; 
    ((_Document)aDocument).Close(saveChanges, originalFormat, routeDocument); //to close the document process (winword.exe) 
    //WordApp.Visible = true; 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
}   

이 예상 작품으로을; Word 문서를 만들고 사용자를 위해 엽니 다. 나는 SaveFileDialog를 사용하여 파일을 저장하는 것에 대해 Microsoft로부터 this link을 읽었지 만, 내 상황에 어떻게 적용할지는 모르겠습니다. SaveFileDialog는 쓰기 할 스트림 객체를 제공하므로 Word 파일을 읽고 스트림에 기록해야합니까? 그렇다면 코딩 방법을 잘 모르겠습니다 만 원형처럼 보입니다. 생성 된 Word 문서를 SaveFileDialog에 직접 전달하는 방법이 있습니까?

답변

4

SaveFileDialog는 사용자에게 폴더와 이름을 선택할 수있는 인터페이스를 제공하기 위해 사용할 수 있습니다. 그런 다음 파일을 저장해야합니다.

SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
saveFileDialog1.Filter = "Word document|*.doc"; 
saveFileDialog1.Title = "Save the Word Document"; 
if(DialogResult.OK == saveFileDialog1.ShowDialog()) 
{ 
    string docName = saveFileDialog1.FileName; 
    if(docName.Length > 0) 
    { 
     object oDocName = (object)docName; 
     aDocument.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); 
     WordApp.Visible = true; 
    } 
} 

당신이 당신의 질문에 언급 방법은 MSDN in this article에 의해 설명되어 있지만 경우에 MS 워드의 응용 프로그램이 파일에 저장 작업을 수행 할 수 있도록하는 것이 더 실용적입니다.

+0

아, 알았습니다. 이 코드는 나에게 오류를 준다. 오류는 "Microsoft.Office.Interop._Document.SaveAs (ref 객체, ref 객체, ...)에 가장 적합한 오버로드 된 일치 항목에는 잘못된 인수가 있습니다."''ref docName'을 변경하여이 오류를 수정했습니다. docName에'(객체). 적절한 솔루션입니까? –

+0

당신이 링크 한 페이지는 제가 게시 한 버전의 업데이트 버전처럼 보이지만, 이전 의견에 언급 된 변경 사항을 포함한이 솔루션이 괜찮 으면, 당분간이 문제에 집중할 것입니다. –

+0

네, 맞아요, 저만, 서둘러 유죄입니다. – Steve

관련 문제