是否可以通过 COM 将图像插入 excel 单元格?
Posted
技术标签:
【中文标题】是否可以通过 COM 将图像插入 excel 单元格?【英文标题】:Is is possible to insert an image into an excel cell via COM? 【发布时间】:2010-10-06 00:55:01 【问题描述】:我使用自动化将值插入单元格,但是我从未见过任何文档,例如,演示插入除文本和/或公式之外的任何内容。
有人可以从外部应用程序插入图像吗?
【问题讨论】:
【参考方案1】:Dim FileName as string
FileName="c:\text.jpg"
Set NewPic = ActiveSheet.Pictures.Insert(FileName)
NewPic.top=100
NewPic.left=100
如果要将图片定位到特定单元格,则选择该单元格作为范围,并使用该范围顶部/左侧/与来定位图片。
示例:http://exceltip.com/st/Insert_pictures_using_VBA_in_Microsoft_Excel/486.html
注意:在 Excel 单元格中不能包含图片。图片位于漂浮在单元格周围的不可见绘图层上。它们可以根据单元格坐标进行定位,这让他们感觉就像生活在单元格中一样。
【讨论】:
在 Excel 2010 中,Pictures.Insert 函数已被静默更改。以这种方式插入的图像成为文件的“实时”链接。因此,要在工作表上创建静态图像,您现在应该使用 Shapes.AddPicture(fileName, false, true, ...),如下所述。【参考方案2】:我看到它已经被回答了,但是请看我的帖子here。
基本上不要使用 Worksheet.Pictures.Insert 方法(MSDN 建议您不要直接使用它,它会返回一个原始 COM 对象),而是尝试使用 Worksheet.Shapes.AddPicture 方法。
Dim range As Microsoft.Office.Interop.Excel.Range
Dim pic as Microsoft.Office.Interop.Excel.Shape
Dim filePath as String
range = ...
filePath = ...
pic = range.Worksheet.Shapes.AddPicture(filePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, range.Left, range.Top, 300, 300)
这并不那么简单,因为您必须指定确切的位置和尺寸,但除此之外,非常酷!
【讨论】:
【参考方案3】:当然,以下代码是使用 Microsoft 互操作库的一个很好的示例:
string excelfilename = @"C:\excelfile.xlsx";
string picturename = @"C:\image.jpg";
object missing = Type.Missing;
Microsoft.Office.Interop.Excel.Application app = new ApplicationClass();
Workbook book = app.Workbooks.Add(missing);
Worksheet sheet = (Worksheet)book.ActiveSheet;
Pictures pics = (Pictures)sheet.Pictures(missing);
pics.Insert(picturename, missing);
book.SaveAs(excelfilename, missing, missing, missing, missing, missing, XlSaveAsAccessMode.xlNoChange,
missing, missing, missing, missing, missing);
app.Quit();
app = null;
【讨论】:
以上是关于是否可以通过 COM 将图像插入 excel 单元格?的主要内容,如果未能解决你的问题,请参考以下文章