我一直在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.
请让我知道这条线路有什么问题?
答案 0 :(得分:2)
据我所知,InlineShapes
集合没有裸Select()
方法。因此,我假设您正在尝试在集合上使用linq。
InlineShapes
是IEnumerable
的实现,没有Select(...)
方法。
我怀疑你需要这样做,
// Note the select is spurious here
oDoc.InlineShapes.OfType<InlineShape>().Select((shape) => shape)
OfType<T>()
会返回支持Select(...)
方法的IEnumerable<T>
。
如果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.
}
这应该为您提供一组包含图片的文档中的所有内联形状。