是否可以通过 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 单元格?的主要内容,如果未能解决你的问题,请参考以下文章

单元格中的 Excel 图像

Openxml单词插入图像

EXCEL单元格批量插入不同批注

将图像嵌入到 Excel 电子表格 - VBA

使用 Google Sheets API 将图像插入 Google Sheets 单元格

要把图片插入到EXCEL的单元格中,如何操作?