c#中的内联形状选择方法

本文关键字:选择 方法 | 更新日期: 2023-09-27 18:12:33

我一直在尝试以下代码在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.

请告诉我这条线路有什么问题?

c#中的内联形状选择方法

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

InlineShapes是没有Select(...)方法的IEnumerable的实现。

我怀疑你需要这样做,

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

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

考虑如果IEnumerableSelect(...)扩展,那么Object类型上就没有任何有用的属性供您使用。

EDIT

如果你想从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.
 }

这应该会给你一个文档中所有有图片的内联形状的集合