您的位置:首页 > 编程语言 > C#

c# Excel 图片 粘帖出错, sheet paste

2011-12-23 18:12 639 查看
最近想从Word文件提取多个图片,并粘帖到Excel时,总是无法粘帖成功,实际出现“Microsoft Office Excel cannot paste the data.”的提示。

c#和VB.net现象不尽相同,c#第一次就无法拷贝,但不关闭程序,重新执行命令,可以拷贝部分图片。但多次执行拷贝两者都会可能在半路出错,或者拷贝相同内容,甚是费解。

最初用的是 sheet.Paste(Missing.Value);

出错停止时,对实际Excel进行Ctrl+V即会出现 "Microsoft Office Excel cannot paste the data."。

此时,鼠标右键点击PasteSpecial,选择Word类型Picture,再粘帖是正常的。

因此,采用sheet.PasteSpecial方法即可达到目的。

Word的调用:

foreach (Word.InlineShape myinlineshape in oWordDoc.InlineShapes)
{
if (myinlineshape.Type == Word.WdInlineShapeType.wdInlineShapeLinkedPicture || myinlineshape.Type == Word.WdInlineShapeType.wdInlineShapePicture)
{
myinlineshape.Select();
oWordApp.Selection.CopyAsPicture();
dal.PastePicture(myinlineshape);
}
}

Excel:

public void PastePicture(Microsoft.Office.Interop.Word.InlineShape inlineShape)
{
Range range = (mySheet.Cells[1, 1] as Range);
range.Select();
mySheet.PasteSpecial(inlineShape.Type, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
}


执行后,若出现图片大小不匹配问题,可以尝试调整PasteSpecial最后一个参数为true尝试。参数类型:

public virtual void PasteSpecial (
[OptionalAttribute] Object Format,
[OptionalAttribute] Object Link,
[OptionalAttribute] Object DisplayAsIcon,
[OptionalAttribute] Object IconFileName,
[OptionalAttribute] Object IconIndex,
[OptionalAttribute] Object IconLabel,
[OptionalAttribute] Object NoHTMLFormatting
)

注意:

当前只试了wdInlineShapeLinkedPicture和wdInlineShapePicture两个类型,碰到其他类型或非InlineShape时候,若使用Paste不会出错,还是Paste会比较合适。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息