LibXL und Bilder einfügen

Moderator: Moderatoren

LibXL und Bilder einfügen

Beitragvon Rudolf » Do, 18. Aug 2016 9: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
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: LibXL und Bilder einfügen

Beitragvon brandelh » Do, 18. Aug 2016 11: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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: LibXL und Bilder einfügen

Beitragvon Rudolf » Do, 18. Aug 2016 12: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: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: LibXL und Bilder einfügen

Beitragvon Rudolf » Do, 18. Aug 2016 12: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: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: LibXL und Bilder einfügen

Beitragvon Rudolf » Do, 18. Aug 2016 12: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) 486-mal betrachtet
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: LibXL und Bilder einfügen

Beitragvon brandelh » Do, 18. Aug 2016 12: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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: LibXL und Bilder einfügen

Beitragvon Rudolf » Do, 18. Aug 2016 12: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
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: LibXL und Bilder einfügen

Beitragvon brandelh » Do, 18. Aug 2016 13: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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: LibXL und Bilder einfügen

Beitragvon Rudolf » Do, 18. Aug 2016 15: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) 466-mal betrachtet
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: LibXL und Bilder einfügen

Beitragvon brandelh » Do, 18. Aug 2016 19:17

Du verwechselst SetPicture() von der Funktion mit AddPicture(), beides wird im Ausschnitt erwähnt.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: LibXL und Bilder einfügen

Beitragvon Rudolf » Fr, 19. Aug 2016 8:26

Hallo Hubert,
hast recht, bei Sheet ist gar keine addpicture() Methode, hab ich total übersehen.
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1150
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich


Zurück zu Andere 3rd-Party-Tools

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast