注册 登录
编程论坛 VFP论坛

VFP控制EXCEL实现指定单元格嵌入图片(非简单粘贴图片)

shschy 发布于 2023-08-01 23:19, 1251 次点击
希望VFP精准控制EXCEL做表格并贴图,希望能将图片嵌入指定单元格。
如cell(1,1)为图片名称
  cell(1,2)为嵌入的图片
学习有关知识,只能实现浮于文字上方的图片插入,请问如何实现图片嵌入式插入。
谢谢!
objExcel=createobject("excel.application")
objExcel.visible=.t.
objExcel.workbooks.add
objExcel.worksheets(1).activate
objExcel.worksheets(1).cells(1,1).value="4D50F73E4918DB4AE7F20CCD11FCFD98(03).JPG"
objExcel.Sheets(1).Cells(1,2).Select
objExcel.ActiveSheet.Pictures.Insert("D:\4D50F73E4918DB4AE7F20CCD11FCFD98(03).JPG").Select
13 回复
#2
shschy2023-08-02 06:22
感谢群里高手分享,结合搜索,下面代码基本满足要求。
mpicture="D:\20230731CN_ZP\截取\黑2_000101_000180\4D50F73E4918DB4AE7F20CCD11FCFD98(03).JPG"
myexcel=newobject("EXCEL.application")
WITH myexcel
    .visible=.t.
    .workbooks.add
    .rows(1).RowHeight = 29
    .cells(1,1).ColumnWidth = 52
    .cells(1,1).value="4D50F73E4918DB4AE7F20CCD11FCFD98(03).JPG"
    .rows(2).RowHeight =108
    .Range("A2").select
    cellW = .ActiveCell.Width
    cellH = .ActiveCell.Height
    WITH .ActiveSheet.Pictures.Insert(mpicture)
        .Placement = 1
        WITH .ShapeRange
            .LockAspectRatio = 0
            .Width=cellw
            .Height=cellh
        ENDWITH
    ENDWITH
ENDWITH
#3
schtg2023-08-02 06:32
谢谢分享!
#4
shschy2023-08-02 07:33
但是测试后,发现图片还是粘贴到excel上,不是嵌入
#5
shschy2023-08-02 07:54
office宏录制里可以看到嵌入图片操作发生的动作,但不知到VFP如何实现调用,其中图片ID好像是office内部管理的。
Sub Macro1()
    .Select
    Range("A2").Formula = "=DISPIMG(" & """" & "ID_A3747A119B6243A9A89E89FF2BC3C133" & """" & ",1)"
    Selection.ShapeRange.Delete
    Range("A2").Select
End Sub
只有本站会员才能查看附件,请 登录

下面是插入图片(浮于文字上)
Sub Macro2()
    Range("A2").Select
    ActiveSheet.Shapes.AddPicture Filename:="D:\4D50F73E4918DB4AE7F20CCD11FCFD98(06).JPG", LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=-1, Top:=-1, Width:=-1, Height:=-1
    .Select
End Sub
#6
shschy2023-08-02 08:37
另外查了placement参数,只找到相关类似VB里的资料,好像是设置浮动格式的具体类型

placement参数的选项取决于使用的控件类型。以下是常见控件类型的placement参数选项:

CommandButton:

1. fmButtonFace(默认):按钮将位于表单上。

2. fmButtonTop:按钮将浮动在表单上方。

3. fmButtonLeft:按钮将浮动在表单左侧。
#7
吹水佬2023-08-02 09:25
以下是引用shschy在2023-8-2 07:33:40的发言:

但是测试后,发现图片还是粘贴到excel上,不是嵌入

“嵌入”是什么意思?
图片边界对齐单元格、大小随单元格变动而变就可以了吧。单元格既然用来放图片,就不会在图片底下存放文字,不存在“浮于文字上方”的做法。
#8
吹水佬2023-08-02 09:28
以下是引用shschy在2023-8-2 07:54:03的发言:

office宏录制里可以看到嵌入图片操作发生的动作,但不知到VFP如何实现调用,其中图片ID好像是office内部管理的。
Sub Macro1()
    .Select
    Range("A2").Formula = "=DISPIMG(" & """" & "ID_A3747A119B6243A9A89E89FF2BC3C133" & """" & ",1)"
    Selection.ShapeRange.Delete
    Range("A2").Select
End Sub

excel2007好像没有DISPIMG()函数
#9
shschy2023-08-02 11:00
目前VFP可以调用比excel2007更高版本的excel吗?
#10
吹水佬2023-08-02 11:29
以下是引用shschy在2023-8-2 11:00:32的发言:

目前VFP可以调用比excel2007更高版本的excel吗?

32位的应用应该可以
#11
shschy2023-08-02 17:35
以下是引用吹水佬在2023-8-2 09:25:05的发言:


“嵌入”是什么意思?
图片边界对齐单元格、大小随单元格变动而变就可以了吧。单元格既然用来放图片,就不会在图片底下存放文字,不存在“浮于文字上方”的做法。

嵌入图片到表格的效果对这里而言就是转其他人再编辑时,不容易混乱。因为不嵌入容易发生图片移位。
只有本站会员才能查看附件,请 登录
#12
easyppt2023-08-02 19:44
关键是 为什么非要读取本地文件插入,不能 直接 数据流 插入吗
比如 从MSSQL 读取图片到 CURSOR,然后 导出EXCEL,数据流直接过去不行吗

难道 所有的其他程序,但凡导出到EXCEL 也都是 先另存为 文件 在插入吗

[此贴子已经被作者于2023-8-2 19:46编辑过]

#13
吹水佬2023-08-02 21:50
回复 11楼 shschy
excel2007不兼容
只有本站会员才能查看附件,请 登录

试这样插入
只有本站会员才能查看附件,请 登录

程序代码:

** EXCEL单元格插入图片
excel =createobject("excel.application")
excel.workbooks.add
she = excel.ActiveSheet
rng = she.cells(2,2)
rng.ColumnWidth = 14
rng.RowHeight = 120
excel.ActiveSheet.Shapes.AddPicture("D:\temp\巧克力.bmp", .t., .t., rng.left, rng.top, rng.width, rng.height).Placement = 1    &&xlMoveAndSize   
excel.visible = 1
#14
schtg2023-08-03 06:26
回复 13楼 吹水佬
学习啦,谢谢!
1