PDA

Ver la Versión Completa : Incrustar PDF en Excel desde delphi


afxe
31-10-2023, 19:23:20
Hola a todos. No termino de encontrar cómo hacer esto: En Excel, en la pestaña INSERTAR, grupo TEXTO, icono OBJETO me permite incrustar un documento (un PDF en este caso) como Icono (hay que marcar un check) en la posición que se quiera.

Un cliente me ha solicitado que los artículos pedidos a proveedores se generen en formato Excel y que incruste para cada artículo la ficha técnica del mismo (que están en formato PDF).

He visto que algo así funciona... pero no sé cómo trasladarlo a Delphi:



obj = sheet1.api.OLEObjects()
obj.Add(ClassType=None, Filename=os.path.abspath(path), Link=False, DisplayAsIcon=True, IconFileName='test.ico', IconIndex = 0, IconLabel='test')
sheet1.save(os.path.abspath(new_path))



Para Visual Basic:




Worksheets(1).OLEObjects.Add ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=40, Top:=40, _
Width:=150, Height:=10

afxe
02-11-2023, 10:51:17
Cosas que estoy probando:



Excel := CreateOleObject('Excel.Application');
ExcelDoc := Excel.Workbooks.Add;
WS := ExcelDoc.ActiveSheet;
Excel.Visible := true;

ws.Shapes.AddPicture('c:\config\logo.bmp', False, True, 0, 0, 100, 50);

ws.OleObjects.Add('Acrobat.Document.DC', 'C:\config\test.pdf', False, True, 'c:\Config\test.ico', 0, 'PDF', 100, 100, 50, 50);



Me devuelve este error: "No se puede obtener la propiedad Add de la clase OLEObjects"

¿Alguien ha conseguido insertar objetos o PDF's en una hoja excel?

afxe
02-11-2023, 11:49:14
Resuelto... estaba empecinado en indicar el ClassType del objeto... no es necesario:

var
Excel, ExcelDoc, WS, oPdf : Variant;
begin

coinitialize(nil);

Excel := CreateOleObject('Excel.Application');
ExcelDoc := Excel.Workbooks.Add;
WS := ExcelDoc.ActiveSheet;

oPdf := ws.OleObjects.Add(null, 'C:\config\test.pdf', True, True, 'c:\Config\test.ico', 0, 'PDF', 0, 0, 100, 20);
oPdf.Width := 100;
oPdf.Height := 20;

end;

ElKurgan
03-11-2023, 08:53:54
Gracias por compartir la solución

Saludos