起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1123|回复: 14

如何将图片插入指定EXECL单元格

[复制链接]
发表于 2010-11-24 12:06:49 | 显示全部楼层 |阅读模式
lJPG := TJPEGImage.Create;
  bs := TMemoryStream.Create;
  try
    TBlobField(dsbMake.DataSet.FieldByName('SYT')).SaveToStream(bs);
    bs.Position := 0;
    lJPG.LoadFromStream(bs);

    DataGrid.SaveToXLS(FileName , True) ; 先导出EXECL
   
    SetPicToExcel (lFileName, lJPG, 1, 4, 5); 想在把图片插入指定位置,  lFileName文件路径,1Sheet索引,4行索引,5列索引
  finally
    bs.Free;
    lJPG.Free;
  end;


请问SetPicToExcel 方法应该如何实现,请给点代码事例
回复

使用道具 举报

发表于 2010-11-24 13:30:59 | 显示全部楼层
楼主看看这个帖子吧
http://bbs.justep.com/forum.php?mod=viewthread&tid=24449
有如何在Excel里插入图片的函数。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-24 14:05:54 | 显示全部楼层

版本3012 引入 ExcelApp.bpl

---------------------------
MainMenu(TMainMenu): Studio.exe - 无法找到入口
---------------------------
无法定位程序输入点 @Clrext@UnregisterClasses$qqrpx26Clrext@TRegisterClassParamxi 于动态链接库 CLRun.bpl 上。
---------------------------
确定   
---------------------------
回复 支持 反对

使用道具 举报

发表于 2010-11-24 14:08:24 | 显示全部楼层
控件与开发端版本不一致
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-24 14:10:04 | 显示全部楼层
这个如何解决
回复 支持 反对

使用道具 举报

发表于 2010-11-24 14:19:53 | 显示全部楼层
连接中的控件是楼主友情提供,要么找提供人在帮编译和你开发端同步的版本,要么就主动和控件同步开发端的版本,

或者自己在平台操作vba的方式来实现
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-24 14:20:35 | 显示全部楼层
看过 http://bbs.justep.com/forum.php?mod=viewthread&tid=23896  帖子 用这里的方法 向Execl中指定单元格插入图片,怎么写代码

function TINFO_PROJECTDETAIL.SetPicToExcel(const AFileName: string; AJPG: TJPEGImage;
  const ASheetIndex, ARowIndex, AColumnIndex: Integer): Boolean;
var
  objApplication, objWorkBooks,ob: object;
  objSourceWB, objCell,objSheet, objShapes: object;
  dispatchApplication, dispatchWorkBooks, dispatchSourceWB: System.DispatchHelper;
  tmpCell,tmpSheet, tmpShapes: System.DispatchHelper;
begin
  Result := False;
  objApplication := ComObj.CreateOleObject('Excel.Application');
  dispatchApplication := DispatchHelper.Create(objApplication);
  objWorkBooks := dispatchApplication.PropertyGet('WorkBooks',[]);
  dispatchWorkBooks := DispatchHelper.Create(objWorkBooks);
  try
    //创建Excel对象并打开
    objSourceWB := dispatchWorkBooks.InvokeMethod('Open',[AFileName]);
    dispatchSourceWB := DispatchHelper.Create(objSourceWB);
    objSheet := dispatchApplication.PropertyGet('Sheets', [ASheetIndex]);
    tmpSheet := DispatchHelper.Create(objSheet);
    objShapes := dispatchApplication.PropertyPut('Shapes', [ARowIndex, AColumnIndex]);

    tmpShapes := DispatchHelper.Create(objShapes);

    try
      tmpShapes.Equals(AJPG);

      Result := True;
    except
      raise 'SetPic Failed';
    end;
  finally
    //释放进程
    dispatchApplication.InvokeMethod('quit', []);
    //(objCell as System.IDisposable).Dispose;
    (objSheet as System.IDisposable).Dispose;
    (objShapes as System.IDisposable).Dispose;
    (objSourceWB as System.IDisposable).Dispose;
    (objWorkBooks as System.IDisposable).Dispose;
    (objApplication as System.IDisposable).Dispose;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-24 14:26:26 | 显示全部楼层

调用楼上方法之前的操作

lJPG := TJPEGImage.Create;
  bs := TMemoryStream.Create;
  try
    TBlobField(dsbMake.DataSet.FieldByName('SYT')).SaveToStream(bs);
    bs.Position := 0;
    lJPG.LoadFromStream(bs);

   SetPicToExcel (lFileName, lJPG, 1, 4, 5);
  finally
    bs.Free;
    lJPG.Free;
  end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-24 16:07:46 | 显示全部楼层
顶。在线等结果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-25 08:42:33 | 显示全部楼层
第2天了,一直等结果
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-5 23:52 , Processed in 0.039406 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表