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的调用:
Excel:
执行后,若出现图片大小不匹配问题,可以尝试调整PasteSpecial最后一个参数为true尝试。参数类型:
注意:
当前只试了wdInlineShapeLinkedPicture和wdInlineShapePicture两个类型,碰到其他类型或非InlineShape时候,若使用Paste不会出错,还是Paste会比较合适。
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会比较合适。
相关文章推荐
- c#向Excel中插入图片
- debug没有问题,release后出错(C#对excel处理)
- C#导出图片到EXCEL源码
- asp.net(c#)打印excel大数据量,最简单,最快的办法,个人认为,哈哈,有人会说,用gridview打印excel不是很方便吗?但是我发现数据量一大gridview就不行,速度慢不说,还会出错
- C#/VB.NET对EXCEL图片添加超链接
- 用c#在excel中插入图片和设置表格宽度
- C#向Excel报表中插入图片的2种方法
- C#实现使用Excel COM组件向Excel文件中添加图片的Demo
- C# 读取excel里的图片并显示在页面上
- C# 实现Excel导出图片
- C# 操作Excel ——Excel获取数据、时间、图片
- C# conn.open() 外部表不是预期的格式( 读取EXCEL文件出错)
- C#向Excel报表中插入图片的2种方法
- C# Excel插入图形,添加文本,填充颜色和图片
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- C#向Excel报表中插入图片的2种方法【转】
- c#向Excel中插入图片
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
- C# 给Excel单元格添加文本及图片批注
- c# 应用NPOI获取Excel中的图片,保存至本地的算法