FAQ > 金融建模 > 第三方交互 > 其他

Q:如何将图形导出到Excel中    

简述
通过com对象,在指定excel里导入图片
  • A:在天软中,实现将图形导出到Excel文件中,需要先将图形保存在本地,然后再通过com对象,将图片插入到指定excel的位置。
    (Excel的com对象Excel.Application,具体请参考微软官方说明:
    Shapes.AddPicture 方法(Excel)
    )
    具体步骤如下:

    第一步:在天软中画图并将图形导出到本地
    具体操作请参考:FAQ:Q:如何将天软生成的图片导出到本地?
    假设本次导出的图形地址为:D:\\DemoTest\\klineTest01.jpg

    第二步:封装插入图片的模型AddPictureToExcel
    定义:AddPictureToExcel(picpath,excelpath,sheetname:String,left,top,width,height:Integer):0
    说明:通过com对象,在指定excel里导入图片
    参数:
    picpath:字符串,图片路径
    excelpath:字符串,excel路径
    sheetname:字符串,工作簿名称
    left:整型,图片插入位置,相对于文件左上角的图片的左上角位置(以点为单位)
    top:整型,图片插入位置,图片的左上角位置(以点为单位),与文件顶端相对。
    width:整型,图片宽度,以点为单位(若要保留图片原有宽度,请输入-1)
    height:整型,图片高度,以点为单位(若要保留图片原有高度,请输入-1)
    函数封装:
    function AddPictureToExcel(picpath,excelpath,sheetname,left,top,width,height);
    begin
    {
     通过com对象,在指定excel里导入图片
     picpath:图片路径
     excelpath:excel路径
     sheetname:工作簿名称
     left,top:图片插入位置
     width,height:图片宽高;保留原图片宽高,设置为-1
    }

     //创建com对象
     GetOleObject("Excel.Application",0,Obj);
     //打开或新建excel
     app:=Obj.WorkBooks.Open(excelpath);
     if not ifobj(app) then
     begin
      ifnewxls:=1;
      app:=Obj.Workbooks.Add;
     end
     //打开或新建工作波
     sheet:=app.Worksheets(sheetname);
     if not ifobj(sheet) then
     begin
      sheet:=app.Worksheets.add;
      sheet.name:=sheetname;
     end
     //添加图片,设置图片位置和大小
     sheet.Shapes.AddPicture(picpath,true,true,left,top,width,height);
     //保存excel
     if ifnewxls then
      app.saveas(excelpath);
     else
      app.save();
     //关闭excel
     app.close();
    End;
    用户操作:将上面函数AddPictureToExcel的实现封装成天软函数。
    相关操作链接:FAQ:Q:如何新建函数

    或者下载封装好的函数附件,导为用户函数
    函数附件:附件:AddPictureToExcel.fun
    函数导入方法:FAQ:Q:如何导入函数

    第三步:调用函数AddPictureToExcel插入图片到指定位置
    实现代码:

     picpath:='D:\\DemoTest\\klineTest01.jpg';//第一步中的图片
     excelpath:="D:\\DemoTest\\test.xlsx";
     sheetname:="PicSheet";
     return rdo2 AddPictureToExcel(picpath,excelpath,sheetname,0,0,-1,-1);

    //结果展示: