Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

LibXL und Bilder einfügen

Moderator: Moderatoren

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

LibXL und Bilder einfügen

Beitrag von Rudolf » Do, 18. Aug 2016 10:22

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: 13765
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh » Do, 18. Aug 2016 12:51

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: 1302
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf » Do, 18. Aug 2016 13:04

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: 1302
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf » Do, 18. Aug 2016 13:09

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: 1302
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf » Do, 18. Aug 2016 13:32

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) 761 mal betrachtet

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13765
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh » Do, 18. Aug 2016 13:45

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: 1302
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf » Do, 18. Aug 2016 13:49

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: 13765
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh » Do, 18. Aug 2016 14:06

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: 1302
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von Rudolf » Do, 18. Aug 2016 16:51

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) 741 mal betrachtet

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13765
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: LibXL und Bilder einfügen

Beitrag von brandelh » Do, 18. Aug 2016 20:17

Du verwechselst SetPicture() von der Funktion mit AddPicture(), beides wird im Ausschnitt erwähnt.
Gruß
Hubert

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

Re: LibXL und Bilder einfügen

Beitrag von Rudolf » Fr, 19. Aug 2016 9:26

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

Antworten