2011-10-28 35 views
0

我一直在嘗試下面的代碼在C#中提取圖像,但我發現,如下圖所示:Inlineshape在C#中選擇方法

Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application(); 

      Microsoft.Office.Interop.Word.Document oDoc = new Microsoft.Office.Interop.Word.Document(); 

oDoc = oWord.Documents.Open(ref str1......); 

oDoc.InlineShapes.Select(); 

錯誤:

oDoc.InlineShapes.Select(); 
The requested member of the collection does not exist. 

請讓我知道了什麼這條線可能是錯的?

回答

2

據我所知InlineShapes集合沒有裸體Select()方法。因此,我假設你正在嘗試在集合上使用linq。

InlineShapesIEnumerable的實現,它沒有Select(...)方法。

我懷疑你需要做到這一點,

// Note the select is spurious here 
oDoc.InlineShapes.OfType<InlineShape>().Select((shape) => shape) 

OfType<T>()返回IEnumerable<T>它的確支持Select(...)方法。

請考慮如果IEnumerable已被Select(...)擴展,那麼在Object類型上不會有任何有用的屬性供您使用。

編輯

如果你想從您可以在InlineShapes圖像...

var pictures = oDoc.InlineShapes.OfType<InlineShape>().Where(s => 
    s.Type = WdInlineShapeType.wdInlineShapePicture || 
    s.Type = WdInlineShapeType.wdInlineShapeLinkedPicture || 
    s.Type = WdInlineShapeType.wdInlineShapePictureHorizontalLine || 
    s.Type = WdInlineShapeType.wdInlineShapeLinkedPictureHorizontalLine); 

foreach(var picture in pictures) 
{ 
    picture.Select(); 
    oWord.Selection.Copy() 

    //Then you need to retrieve the contents of the clipboard 
    //which I feel is another question. 
} 

這應該給你一組文檔中的所有內嵌形狀的具有的圖片。

+0

您的邏輯不會選擇doc文件中的圖像。 – fawad

+0

無效的表達術語'是' – fawad

+0

嘗試一下,我自己並沒有編譯這段代碼,只是寫了它,希望能指引您朝着正確的方向前進。 – Jodrell