C#中的Inlineshape select方法

时间:2011-10-28 09:16:48

标签: c#

我一直在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.

请让我知道这条线路有什么问题?

1 个答案:

答案 0 :(得分:2)

据我所知,InlineShapes集合没有裸Select()方法。因此,我假设您正在尝试在集合上使用linq。

InlineShapesIEnumerable的实现,没有Select(...)方法。

我怀疑你需要这样做,

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

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

如果IEnumerableSelect(...)扩展,则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.
 }

这应该为您提供一组包含图片的文档中的所有内联形状。