2013-02-03 4 views
0

워드 문서를 만들고 일부 그림을 삽입하고 저장하려고합니다.는 C#을 통해 생성 된 워드 문서에 이미지를 삽입 할 수 없습니다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Reflection; 
using Word = Microsoft.Office.Interop.Word; 
using System.Windows.Forms; 
using System.IO; 
namespace Snapper 
{ 
    class WordDocumentGenerator 
    { 
     public void CreateWordDocument(string fileName) 
     { 
      string originalPath = Directory.GetCurrentDirectory(); 
      string path = originalPath; 
      path += @"\snapshots"; 
      Directory.SetCurrentDirectory(path); 

      Word._Application wordApp = new Word.Application(); 
      Word._Document wordDoc; 
      object oMissing = System.Reflection.Missing.Value; 

      wordDoc = wordApp.Documents.Add(ref oMissing, ref oMissing, 
              ref oMissing, ref oMissing); 

      wordDoc.InlineShapes.AddPicture(@"\snap1.jpg"); 
      wordDoc.InlineShapes.AddPicture(@"\snap2.jpg"); 

      path = originalPath; 
      path += @"\documents"; 
      DirectoryInfo docDir = new DirectoryInfo(path); 
      if (!docDir.Exists) 
      { 
       docDir.Create(); 
      } 
      Directory.SetCurrentDirectory(path); 
      Object savePath = path + @"\" + fileName + ".doc"; 

      wordDoc.SaveAs(ref savePath, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing, 
       ref oMissing 
       ); 
      wordDoc.Close(SaveChanges: true); 
     } 

    } 
} 

addpicture() 메서드에 유효한 파일 이름이 아니라는 처리되지 않은 예외 오류 상자가 나타납니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box. 

************** Exception Text ************** 
System.Runtime.InteropServices.COMException (0x800A1420): This is not a valid file name. 
Try one or more of the following: 
* Check the path to make sure it was typed correctly. 
* Select a file from the list of files and folders. 
    at Microsoft.Office.Interop.Word.InlineShapes.AddPicture(String FileName, Object& LinkToFile, Object& SaveWithDocument, Object& Range) 
    at Snapper.WordDocumentGenerator.CreateWordDocument(String fileName) in D:\RESOURCES\Projects\Visual Studio Projects\Snapper\Snapper\GenerateWordDocument.cs:line 27 
    at Snapper.SnapperForm.CreateDocumentButton_Click(Object sender, EventArgs e) in D:\RESOURCES\Projects\Visual Studio Projects\Snapper\Snapper\SnapperForm.cs:line 130 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 


************** Loaded Assemblies ************** 
mscorlib 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4971 (win7RTMGDR.050727-4900) 
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll 
---------------------------------------- 
Snapper 
    Assembly Version: 1.0.0.0 
    Win32 Version: 1.0.0.0 
    CodeBase: file:///D:/RESOURCES/Projects/Visual%20Studio%20Projects/Snapper/Snapper/bin/Debug/Snapper.exe 
---------------------------------------- 
System.Windows.Forms 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4977 (win7RTMGDR.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll 
---------------------------------------- 
System 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4971 (win7RTMGDR.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll 
---------------------------------------- 
System.Drawing 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4980 (win7RTMGDR.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll 
---------------------------------------- 
HotKeys 
    Assembly Version: 1.0.0.0 
    Win32 Version: 1.0.0.0 
    CodeBase: file:///D:/RESOURCES/Projects/Visual%20Studio%20Projects/Snapper/Snapper/bin/Debug/HotKeys.DLL 
---------------------------------------- 
System.Configuration 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll 
---------------------------------------- 
System.Xml 
    Assembly Version: 2.0.0.0 
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900) 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll 
---------------------------------------- 
Microsoft.Office.Interop.Word 
    Assembly Version: 14.0.0.0 
    Win32 Version: 14.0.4762.1000 
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Office.Interop.Word/14.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Word.dll 
---------------------------------------- 

************** JIT Debugging ************** 
To enable just-in-time (JIT) debugging, the .config file for this 
application or computer (machine.config) must have the 
jitDebugging value set in the system.windows.forms section. 
The application must also be compiled with debugging 
enabled. 

For example: 

<configuration> 
    <system.windows.forms jitDebugging="true" /> 
</configuration> 

When JIT debugging is enabled, any unhandled exception 
will be sent to the JIT debugger registered on the computer 
rather than be handled by this dialog box. 
+0

어떤 종류의 예외가 있습니까? –

+0

Hab 당신은 우리에게 합법적 인 경로를 시도했는데 대신 현재 디렉토리 춤을 얻거나 설정하는 중입니까? –

+0

"\ snap1.jpg"는 유효한 파일 이름입니까? "snap1.jpg"를 시도 했습니까? – PhoenixReborn

답변

4

왜 작동하는지 테스트 해 보시지 않겠습니까?

string originalPath = Directory.GetCurrentDirectory(); 
string path = @"\snapshots"; 
string dirpath = Path.Combine(originalPath, path); 
string filepath = @"snap1.jpg" 
string completepath = Path.Combine(dirpath, filepath);  

파일 이름에 ...! 시작하지 않음 "\"
정확한 예외를 건네주지 않으면 열심히하십시오.

+1

지금 시험해 볼 것이다 – kunaguvarun

+0

Nope. 그래도 같은 예외 – kunaguvarun

-1

감사합니다. AddPicture() 메서드에서 파일 이름과 함께 경로를 연결했습니다. 이제 모든 사람들이 예상대로 일하고 있습니다.

+1

당신은 다음을 제안하는 @Rusty Mcpherson의 대답을 받아 들여야합니다. –

관련 문제