【问题标题】:Insert an image on each row in an Excel Sheet with Delphi使用 Delphi 在 Excel 工作表中的每一行插入图像
【发布时间】:2010-08-16 02:10:47
【问题描述】:

我的 Delphi 6 程序需要在我的 Excel 表的每一行放置一个图像。 我可以用我从另一篇文章中读到的内容将图片插入到固定位置。

procedure insertImages(ActiveSheet: OleVariant; ImageFilePath: String; ImageHeight, PictureTop, PictureLeft: Integer);
var
  Picture: OleVariant;
begin
    try
       Picture := ActiveSheet.Pictures.Insert(ImageFilePath);
       Picture.Width := ImageHeight * Picture.Width /Picture.Height;
       Picture.Height := ImageHeight;
       Picture.ShapeRange.Left := PictureLeft;
       Picture.ShapeRange.Top := PictureTop;
       Picture.Placement := xlMove;
    except
    end; //try
end; //insertImages;

上面的代码工作正常,但是我在传递 PictureTop 和 PictureLeft 参数时遇到了麻烦,所以每行的第 2 列有不同的图像?

如何获取特定单元格的 Top 和 Left 值? 或者有更好的方法吗?

请帮忙。

【问题讨论】:

    标签: delphi excel delphi-6 vba


    【解决方案1】:

    例如如果你使用;

    ActiveSheet.Cells[2, 2].Select;
    ActiveSheet.Pictures.Insert(ImageFileName);
    

    那么您的图片的顶部等于 Cell[2, 2] 的顶部,图片的左侧等于 Cell[2, 2] 的左侧

    【讨论】:

    • 嗨,刚刚尝试过,但不知何故,在我的十条记录循环中,所有十张图像碰巧都插入到我的工作表的同一位置,彼此重叠。甚至不在我的第一张唱片的正确位置。不知道为什么。看起来“选择”不起作用或 Pictures.Insert() 没有相对于活动单元格插入。
    • @Snackmoore - 您已经从您的程序中删除了“Picture.ShapeRange.Left/Top”语句,对吧?
    • 是的,我有。不知道出了什么问题。我试图通过启动一个新项目来隔离问题,但我使用了 ActiveSheet.Cells[2,2].Select;ActiveSheet.Pictures.Insert(ImageFilePath);而不是对单元格进行软编码,它仍然无法工作。会不会是office版本的问题?我在 XP 上使用 Office 2007、Delphi 6。非常感谢。
    • 我在其他论坛上读到,在 Office 2007 中,图像总是出现在 B4 上是一个错误。无论如何,我将 Picture.Top 和 .Left 设置为 ActiveSheet.Cells[Row, Column].Top 和 .Left ,它似乎工作。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多