【问题标题】:Insert Image in Excel through Matlab通过 Matlab 在 Excel 中插入图像
【发布时间】:2011-12-08 10:56:36
【问题描述】:

我正在使用 Shapes.AddPicture 函数在 Excel 文件中插入图像。

我这样称呼例程:

leftPlacement=450;
topPlacement=20;
imgWidth=350;
imgHeight=300;

Shapes.AddPicture([pwd '\' img] ,0,1,leftPlacement,topPlacement,imgWidth,imgHeight);

这很好用。但是,图像掩盖了文件中的数据。要更改位置,必须手动更改leftPlacement, topPlacement, imgWidth imgHeight

我想知道,是否有更好的方法可以将图像透明地放置在空单元格中。

【问题讨论】:

  • 你知道空白范围在哪里吗?如果是,您可以通过设置其 TopLeftCell 属性来重新定位图像。
  • 是的,我可以找到范围,是否可以通过Matlab将图像放在特定单元格上。就像我想把图像放在 C9 中然后提到图像的大小
  • 我不熟悉 Matlab 或它如何与 Excel 交互。您发布的代码看起来可能使用了一些内置的 Excel 属性:这就是我建议使用 topleftcell 方法的原因。您可以使用 Matlab 从您的 excel 文件中读取属性吗?您的范围应该有一个 Top 和一个 Left 属性,您可以使用它们来定位图像。
  • 我可以在 Matlab 中读取/写入 excel 文件的属性。我不知道用于将图像放置在正确单元格中的方法/功能。
  • 你能多展示一点你的代码吗?你是如何得到 Shapes 对象的?

标签: excel matlab com office-interop


【解决方案1】:

形状不会附加到 Excel 工作表中的单个单元格 - 它们漂浮在它们上方并有自己的坐标。如果您想将它们浮动到特定单元格上方,您可以获取该单元格的坐标并使用这些坐标。

所以如果你想将它浮动到单元格 C9 上方,请尝试

left = xl.ActiveSheet.Range('C9').Left;
top = xl.ActiveSheet.Range('C9').Top;
xl.ActiveSheet.Shapes.AddPicture('myPicPath',0,1,left,top,myPicHeight,myPicWidth)

其中 xl 是包含您对 Excel 应用程序的引用的变量。

请注意,如果您随后调整大小或以其他方式移动任何单元格,形状/图像的位置不会改变 - 您需要使用相同的方法再次重新定位它。

【讨论】:

猜你喜欢
  • 2012-01-21
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 2010-10-06
  • 2019-12-14
  • 2011-09-17
相关资源
最近更新 更多