LibXL und Bilder einfügen

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

LibXL und Bilder einfügen

Beitrag von Rudolf »

Hallo,
mit LibXL lassen sich auch Bilder einfügen, finde in HBLIBXL aber keine Methode für addPicture(cFil). Habe versucht die Methode zu ergänzen, bekomme aber immer eine Fehler
oError:description : Function is not declared
oError:filename :
oError:genCode : 21
oError:operation : FPQCALL
Stimmt vielleicht was mit dem Aufruf nicht ?

Grüße
Rudolf

Code: Alles auswählen

METHOD xlSheet:SheetAddPicture( cFilename )
   LOCAL uRet := nil
   cFilename := ::ForceAnsi(cFilename)
   uRet := FpQCall( {'LibXL','xlSheetAddPictureA'},'__sl__sl__pt',::hHandle,cFilename)
RETURN uRet
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh »

die Funktion muss neu sein, hast du die in deiner DLL denn drinn ?

In diesen Fällen gehe ich hin, öffne die DLL im HEX Modus mit MED und suche nach ascii ...

Die Funktion heißt: xlBookAddPictureA
Gruß
Hubert
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf »

Hallo Hubert,
laut Doku :
http://www.libxl.com/workbook.html#addPicture
Interessanterweise sind die Methoden für Book in Deiner Lib vorhanden, aber nicht für Sheet. Habe es wie Du siehst versucht die Methode einzubauen, aber geht nicht.
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf »

Hallo,
habs übrigends auch so versucht:

Code: Alles auswählen

 nBmp := oBook:BookAddpicture(PDFEXPORT_IMG_ALTER)
     if nBmp = -1
          toastmsg("Image " + PDFEXPORT_IMG_ALTER + " not found !")
     else
          oSheet:SheetSetPicture(30,0,nBmp)
     endif
geht trotzudem nicht, laut Beispiel
http://www.libxl.com/place-picture-excel.html
sollte es aber funktionieren
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf »

Hallo,
es kommt doch etwas mit

Code: Alles auswählen

 nBmp := oBook:BookAddpicture(PDFEXPORT_IMG_ALTER)
     if nBmp = -1
          toastmsg("Image " + PDFEXPORT_IMG_ALTER + " not found !")
     else
          oSheet:SheetSetPicture(30,0,nBmp,50,50)
     endif
Laut Doku sollte die Grafik 50 x 50 sein, ist aber nur ganz schmal und geht bis ca. Zeile 1500. Auch wenn ich nur oSheet:SheetSetPicture(30,0,nBmp,50) verwende.
Grüße
Rudolf
Dateianhänge
2016-08-18_13h28_53.png
2016-08-18_13h28_53.png (5.5 KiB) 9048 mal betrachtet
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh »

Also wenn in der Hilfe "Book class reference" steht, dann ist es eine xlBook... Funktion, keine sheet ;-) (bei uns Methode)
Vermutlich wird das Bild - wie bei einer PDF - einmal in das Dokument (book) geladen und auf dem Sheet dann nur positioniert.

Wie man sowas macht, weiß ich aber leider nicht, da ich sowas nicht brauche.
Eventuell mal den Support fragen wie es mit Bilder einfügen geht (welche Funktionen man wie aufrufen muss)
Gruß
Hubert
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf »

Hallo Hubert,
Danke, werde mal den Support kontaktieren. Aber im Link siehst Du dass es die Sheet Klassen Refernz ist. Hier ist genauso wie in der Book die setpicture Methode vorhanden. Aber egal, wenn es mit Book auch geht ist es kein Problem. Kann nur eine Kleinigkeit fehlen für die richtige Anzeige.
Grüße
Rudolf
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh »

Rudolf hat geschrieben:Aber im Link siehst Du dass es die Sheet Klassen Refernz ist.
Da hast du falsch gelesen, denn mit deinem Link komme ich auf dieses Beispiel:

Code: Alles auswählen

Placing pictures
This example shows how to insert a picture into an Excel sheet. 
Note that picture is shared for all sheets in workbook. 
LibXL supports PNG, JPG and WMF picture formats.

#include <iostream>
#include "libxl.h"
using namespace libxl;
int main() 
{         
    Book* book = xlCreateBook();
    if(book)
    {
        int id = book->addPicture(L"picture.jpg");
        if(id == -1)
        {
            std::cout << "picture not found" << std::endl;
            return -1;
        }
        Sheet* sheet = book->addSheet(L"Sheet1");
        if(sheet)
        {
            sheet->setPicture(10, 1, id);
        }
        book->save(L"out.xls");
        book->release();
    }
    return 0;
}
da siehst du, dass die genannte Funktion eine vom book ist:

int id = book->addPicture(L"picture.jpg");

nach der Funktion wird dann die Bildreferenz ID verwendet um es auf ein Sheet zu setzen:

sheet->setPicture(10, 1, id);

Die Erklärung sagt genau das was ich vermutet hatte:

Note that picture is shared for all sheets in workbook

ein Bild wird einmalig im BOOK gespeichert und über seine ID auf die Seiten per Referenz angezeigt.

PS: da auch eine Dokumentation falsch sein kann, suche ich ja in der DLL nach dem Namen,
wenn es dort keine SheetAddPicture(A) gibt, dann gibt es sie tatsächlich nicht. :wink:
Gruß
Hubert
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf »

Hallo Hubert,
danke für die Info, ich habe unter diesen Link
http://www.libxl.com/spreadsheet.html
welcher sich auf sheet bezieht die Methoden in der Online Doku. Aber das Beispiel ist eindeutig, also vorher dem book zuordnen und nicht dem sheet.
Grüße
Rudolf
Dateianhänge
2016-08-18_16h46_05.png
2016-08-18_16h46_05.png (17.18 KiB) 9028 mal betrachtet
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh »

Du verwechselst SetPicture() von der Funktion mit AddPicture(), beides wird im Ausschnitt erwähnt.
Gruß
Hubert
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf »

Hallo Hubert,
hast recht, bei Sheet ist gar keine addpicture() Methode, hab ich total übersehen.
Grüße
Rudolf
Antworten