2015-10-09 142 views
0

我從一個Word文檔複製編程的圖像到剪貼板。如何從圖像粘貼剪貼板到Word

我想該圖像粘貼到使用C#和爲的Microsoft.Office.Interop.Word參考字一個字的文件。

下面是代碼:

foreach (Words.InlineShape shape in document.InlineShapes) 
{ 
    if (shape != null) 
    { 
     if (shape.Type == Words.WdInlineShapeType.wdInlineShapePicture) 
     { 
      shape.Select(); 
      app.Selection.CopyAsPicture(); 
      Words.Document doc = app.Documents.Add(); 

      System.Drawing.Image img = null; 
      if (Clipboard.ContainsImage()) 
      { 
        img = Clipboard.GetImage(); 
        IDataObject idata = Clipboard.GetDataObject(); 
      } 
     } 
    } 
} 
+0

產生一些你的代碼你如何嘗試這樣做 –

回答

0

而不是直接剪貼板工作,你可以簡單的用Word自帶的粘貼功能粘貼回。例如:

doc.Content.Paste(); 

但首先問自己,你是否真的需要使用剪貼板。使用剪貼板意味着你留下剪貼板(浪費內存),一個大圖片,除非你它清理乾淨,這也意味着你失去了剪貼板,這可能會打亂用戶的原創內容。考慮使用FormattedTextRange的,而不是:

targetRange.FormattedText = sourceRange.FormattedText 

FormattedText屬性複製所有文字和格式化這包括任何嵌入式領域,表格,圖片等。(你需要開始與包括範圍原始圖片的錨點)。您可以通過Range屬性獲取範圍的InlineShape。 (對於浮動Shape,你會使用Anchor屬性)。

+0

- 非常感謝你的幫助。FormattedText正在制定中。只是我想的範圍有點問題。當我嘗試複製兩個圖像時,以前的圖像是overwrite.So我怎麼可以幫忙呢? –

+0

這聽起來像你粘貼到一個範圍,然後粘貼到相同的範圍。請記住,在粘貼時,選區會展開以包含粘貼的內容,因此,如果您使用與下一貼的粘貼目標相同的範圍,則會覆蓋所有內容。嘗試在粘貼之前摺疊範圍('range.Collapse(wdCollapseEnd)')。 –

+0

非常感謝,我得到了正確的答案。 –