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.
请告诉我这条线路有什么问题?
据我所知,InlineShapes
集合没有裸Select()
方法。因此,我假设您正在尝试在集合上使用linq。
InlineShapes
是没有Select(...)
方法的IEnumerable
的实现。
我怀疑你需要这样做,
// Note the select is spurious here
oDoc.InlineShapes.OfType<InlineShape>().Select((shape) => shape)
OfType<T>()
返回支持Select(...)
方法的IEnumerable<T>
。
考虑如果IEnumerable
被Select(...)
扩展,那么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.
}
这应该会给你一个文档中所有有图片的内联形状的集合