Español
Foro

LibXL de xlware.com

 

Christof
Neuß
¡Hola,

ha se ya veces alguien con el DLL LibXL befasst?
Damit puede ser direkt en Exceldateien (auch xlsx y xlsm) zugreifen y esta bearbeiten.

Archivos abierto y Textos reinschreiben kann Yo ya, pero yo verzweifle momentan a el Características, el una Zahl en un Zelle escribir oder una Valor auslesen. Das kann doch no así schwer ser.

Ist para mich interessant, como algunos Anwender de Programmen Excel nada mehr lokal installiert haben y el Bearbeitung encima ActiveX no mehr funktioniert.

Gracias...!!!
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




H.Brill
Wenn sí ya el wesentliche klappt :
Was es porque en el Doku de el DLL ?
Como son porque el Übergabe - Parámetro ?

Algo como scheitert meistens, si la Übergabe
el Parámetro falso es. Will heißen, si ellos
por Referenz oder por Valor transferencia voluntad.

En el Pagar weiß Yo ahora no genau, si como
Profano auch por Ref. übergibt. Notfalls veces el
a übergebene Zahl en una Zona escribir
y esta entonces transferencia. Das gleiche gilt auch
beim Lesen.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
15.03.2016  
 




RGH
Hakllo,

el problema es hier, dass el Función para Carta el numerischen Werte una Double (64 Bit) como Valor (byVal) esperado. In 32-Bit-XProfan son aber todos Parámetro en una API-Aufruf 32-Bit breit. Mit uno pequeño Zusatz-Procedimiento puede wir aber una Double en zwei LongInts verteilen y esta transferencia. Einer API-Función es egal si el 64 Bit como una Parámetro oder como zwei Parámetro überegeben voluntad. Lo necesario sólo 64 Bit ser, el como kommen:
Declarar Handle hLibxl, book, sheet
hLibxl = ImportDLL("libxl.dll", "")
set("CallConv","CDECL")

proc xlSheetWriteNumD

    parámetros handle s, longint x,y , double d, handle f
    declarar longint d1, d2, memory md
    dim md, 8' Ein Double ha 8 Byte = 64 Bit
    md = addr(d)' Das Double se en el Zona gemappt
    d1 = long(md,0)' El ersten vier Bytes kommen después de d1
    d2 = long(md,4)' El zweiten vier Bytes kommen después de d2
    xlSheetWriteNumA(s, x, y, d1, d2, f)

ENDPROC

cls
book = xlCreateBookCA()

IF book

    sheet = xlBookAddSheetA(book, "sheet1", 0)

    IF sheet

        xlSheetWriteStrA(sheet, 2, 2, "Hello, World!", 0)
        xlSheetWriteNumD(sheet, 3, 1, 1000, 0)

    ENDIF

    xlBookSaveA(book, "example.xls")
    MessageBox("File Written", "", 0)
    xlBookReleaseA(book)

ENDIF

WaitInput
FIN

So funktioniert lo! Como beim Auslesen el gleiche Problema auftaucht, debería uno numerische Werte como String auslesen y luego con VAL umwandeln.

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
15.03.2016  
 




Christof
Neuß
Es sí veces otra vez genial

Kaum va uno 'ne Std. joggen, en el Hirn otra vez algo a lüften, ya findet uno hier una Referencia, el weiterhilft. DANKE Roland. Das ha ya veces bien geklappt.

Leider bin Yo en el Umgang con DLL siempre todavía Laie y verzweifle más...

Schau' veces:
Declarar Handle hLibxl, book, sheet
hLibxl = ImportDLL("libxl.dll", "")
set("CallConv","CDECL")
Var Expediente$="Test1.xls"
Var Gelesen$=""

proc xlSheetWriteNumD

    parámetros handle s, LONGint x,y , double d, handle f
    declarar longint d1, d2, memory md
    dim md, 8' Ein Double ha 8 Byte = 64 Bit
    md = addr(d)' Das Double se en el Zona gemappt
    d1 = long(md,0)' El ersten vier Bytes kommen después de d1
    d2 = long(md,4)' El zweiten vier Bytes kommen después de d2
    xlSheetWriteNumA(s, x, y, d1, d2, f)

ENDPROC

cls
book = xlCreateBookCA()
xlBookLoadA(book, Expediente$)

IF book

    'sheet = xlBookAddSheetA(book, "sheet1", 0)
    sheet = xlBookGetSheetA(book, 0)

    IF sheet

        xlSheetWriteStrA(sheet, 2, 2, "Hello!", 0)
        xlSheetWriteNumD(sheet, 3, 1, 1000, 0)
        Gelesen$=xlSheetReadStrA(sheet, 9,0)
        Imprimir Gelesen$

    ENDIF

    xlBookSaveA(book, "Test1.xls")
    xlBookReleaseA(book)

ENDIF

Imprimir "FERTIG!"
WaitInput
FIN

Gelesen$ se zwar bestückt, pero yo erhalte algo como como una Pointer, oder? Como gehe Yo porque así en? Hab' ya el una u otros ausprobiert, pero yo finde no fuera.

Und beim Zahlenauslesen como texto - Yo grundsätzlich verstehe - stellt el Cuestión, si el Función xlSheetReadStr() en uno "Zahlenzelle" überhaupt funktioniert.

Schon veces otra vez una großes DANKE...

40 kB
Hochgeladen:15.03.2016
Ladeanzahl70
Descargar
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




H.Brill
Soweit Yo el sehe, se como todavía una Formato
con zurückgegeben :


Reads a cadena and its format from cell


Müßtest du veces ausprobieren, si como una Zona
no mejor wäre :
Zona# = xlSheetReadStrA(sheet, 9,0)

Wenn el DLL-Función una Nullbyte hinter el String setzt,
es sí simplemente, con String$(Zona#, 0) a el String a
kommen.

Roland :
Könnte él a Übergabe de Pagar no auch
Double(N&) oder QuadInt
nehmen ? El son doch 64Bit breit.

Ansonsten probier lo veces con Zona#. Como bekommt uno
uno en efecto con Float(V, A) una 64Bit - Valor.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
15.03.2016  
 




Christof
Neuß
Hi,

Textos y Formeln auslesen kann Yo ahora ya veces. Es relativ simplemente con
Gelesen&=xlSheetReadStrA(sheet,10,0)
Imprimir STRING$(Gelesen&,0)
Gelesen&=xlSheetReadFormulaA(sheet,11,0)
Imprimir STRING$(Gelesen&,0)

En Pagar funktioniert el aber por desgracia, no.
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




H.Brill
Tomar aber más bien veces Bereiche :
Declarar Memory Zona' oder Zona#
Dim Zona, 256

Gelesen& es una normaler LongInt.
Das klappt zwar oben, porque beides
el Variables-Adresse beinhaltet, es
pero no así de Roland beabsichtigt
y kann durchaus veces fehlschlagen.

Mach mejor :

Was todavía va, es una Pointer.

En Pagar puede auch no trabajo.
Hier muß uno el Bereichsfunktionen Float(V,A)
oder Largo(V, A) benutzen. El String$() - Función
liest solange, a entweder una Nullbyte kommt
oder a ans el Ende des Bereichs. Und Zahlenwerte
haben nunmal kein Nullbyte.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
15.03.2016  
 




Christof
Neuß
Merci para el Referencia. Ok, hab' s en Bereiche umgestellt. Im STR-Zona alles como vorher y - desafortunadamente - auch en el Zahlenbereich. Lo funktioniert no. Egal, Yo auch probiere...

So geht's no...
Gelesen#=xlSheetReadNumA(sheet, 3,1,0)
ZahlGelesen&=Float(Gelesen#,0)
Imprimir ZahlGelesen&

... con ZahlGelesen&=Long(Gelesen#,0) geht's auch no. Yo bekomme sólo Fehlermeldungen.
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




RGH
Zum String-Zona: Er muss no dimensioniert voluntad, como el API-Función dies en diesem Fall hecho.

Zum Lesen de Pagar: Hier el problema es, dass auch el Rückgabewert uno API-Función en el 32-Bit-XProfan sólo una 32-Bit-Valor (LongInt, Zona, Handle oder Double) ser kann, qué para el gesamte Windows-API zutrifft. El Función el DLL liefert pero en numerischen Werten una Double (64 Bit) zurück, qué con XProfan nun veces no va. AUch el Auislesen como String funktioniert no, como el Función, como auch en el Documentación es, NULL zurückliefert, si en el Zelle kein String es

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
15.03.2016  
 




Christof
Neuß
Hola Roland,

danke para el Info. Schade. Aber entonces brauche Yo no mehr a probieren. Momentan brauche Yo tats. sólo el Lesefunktion para Cuerdas. Das reicht sí entonces. Leider kann ich's entonces no para otro Anwendungen nutzen.
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




RGH
Lo son una solución, el pero no bastante aufwandsarm es:

In Delphi una Wrapper-DLL escribir, el entonces con Single arbeitet y el Double como String zurückliefert, etc. Yo habe para mich veces así una DLL geschrieben, el a Tiempo sólo el Características de mi Ejemplo enthält. En Gelegenheit Yo el Aufrufkonvention auch de CDECL después de STDCALL gewandelt. Damit sieht el Ejemplo ahora así de y funktioniert einwandfrei:

En WriteNum se el Función single() verwandt, así el Zahl 1000 no como Integer transferencia se. Man podría aber auch 1000.0 escribir oder direkt una variable des Typs SINGLE transferencia.

Lo wäre also machbar, una Wrapper-DLL a escribir, el todos Características el Original-DLL enthält. Otro Möglichkeit wäre, una Wrapper-DLL sólo para el Características a escribir, el Double ls Parámetro obtener y/oder Double zurückliefern. Das wäre algo weniger aufwendig.

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
16.03.2016  
 




Christof
Neuß
Hola Roland,

como Usted ya schreibst... "nicht bastante aufwandsarm".
Und el gilt no sólo dafür, el zusätzliche DLL-a realisieren, pero auch para mi en el Jahre gekommene Anwendung, el Yo bastante umbauen debería. Das Problema es u.a., dass I native Características para unos pocos schnelle Dateifunktionen zurückgreife y aquí todavía con XPSE compiliere. Der wiederum es pero no tan completamente Freund con algunos XProfan X3-Características y así führt eins para otro... Hätte Yo ahora 100 zahlende Kunden sería lo mich auch no abhalten, el - relativ kleine - Programa bastante neu a escribir. Aber lo son sólo una Handvoll Kunden y lo se wahrscheinlich demnächst bastante eingestellt voluntad. Yo verzichte ahora en una Plausibilitätsprüfung y luego läuft's auch sin Excelaufruf por.

Das Thema "Zugriff en Exceldateien" beschäftigt mich aber más. Tal vez gehe Yo veces en XLware a y frage, si una solución son (z.B. Num-Werte como String a lesen).

EIN Grund para mich seinerzeit con XProfan anzufangen fue, aufgrund el Mächtigkeit la lengua, nahezu no weitere DLL einsetzen tener. Si el así bleiben se, muss Yo otro Möglichkeiten encontrar.

Vorerst vielen Dank a todos, el hier mitgedacht y geholfen haben.
 
XProfan X3
Win10 16 GB RAM
17.03.2016  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

14.332 Views

Untitledvor 0 min.
Christof Neuß05.12.2018
p.specht28.11.2018
Jens-Arne Reumschüssel22.05.2018
Rainer Hoefs17.05.2016
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie