| |
|
|
- Página 1 - |
|
 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...!!! |
|
|
| |
|
|
|
| |
|
- Página 1 - |
|
 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:
Declarar Handle hLibxl, book, sheet, format, memory gelesen
hLibxl = ImportDLL("prlibxl.dll", "")
cls
book = xlCreateBookCA()
IF book
sheet = xlBookAddSheetA(book, "sheet1", 0)
IF sheet
xlSheetWriteStrA(sheet, 2, 2, "Hello, World!", 0)
xlSheetWriteNumA(sheet, 3, 1, single(1000), 0)
gelesen = xlSheetReadStrA(sheet, 2, 2, 0)
Imprimir String$(Gelesen, 0)
gelesen = xlSheetReadNumA(sheet, 3, 1, 0)
Imprimir String$(Gelesen, 0)
ENDIF
xlBookSaveA(book, "example.xls")
MessageBox("File Written", "", 0)
xlBookReleaseA(book)
ENDIF
WaitInput
FIN
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. |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
 | Wenn wir sólo hunderte Leben hätten y el Tiempo.
Yo muss gestehen mich ahora hier en el dies Thema no hinein-gekniet a haben, frage mich aber,
qué uns daran hindert, 2 Largo vom Stack abzurufen.
Tal vez durchschaue Yo ahora aber auch sólo no, y lo wäre nutzlos 2 Largo vom Stack abzurufen.
¿Puede Usted veces una Mini-Ejemplo para NativeProfanFree [...] herstellen?
Como podría uno doch una Wrapper-nProc escribir, el Roland entonces wiederum auch en Profano einbauen podría. Algo como como "call2". |
|
|
| |
|
|
|
 Christof Neuß | ¡Hola David,
Yo una vez más una kleines Ejemplo para NativeProfanFree erstellt. El ZIP-Expediente enthält ALLES, inkl. Compiler, Linker etc. Das Programa enthält ahora no nProc. Darauf kommt's aber auch no a. Problema es sí, dass el Double-Rückgaben de xlSheetReadNumA no verarbeitet/umgesetzt voluntad puede. Schau' Usted vorher vlt. veces el Ejemplo.xls a.
Si usted Lust y Tiempo hast.... Gerne auch aún en DIESEM Leben.  |
|
|
| |
|
|
|
 | Mein Gedanke primero war, entonces eben sólo el 32-Bit-Anteil des Wertes a ermitteln. Dies dürfte vermutlich para el meisten Fälle ya ausreichen - wann arbeitet uno ya con Pagar en el 4-Milliarden-Zona.
Das Paket schaue Yo muy gerne a. |
|
|
| |
|
|
|
 Christof Neuß | ¡Hola,
hab' veces xlware angeschrieben y una Antwort obtener:
--------------------------------------------------- Hi Christof,
thank you for your mensaje.
I have added a possibility to read numbers as strings and write strings as numbers en this build:
Use the Sheet::readStr() method for reading numbers too. Add CELLTYPE_NUMBER (1) parameter for writing a cadena as number:
sheet->writeStr(7, 5, L"200.55", 0, CELLTYPE_NUMBER);
Please note that it works only for xlsx format at the moment.
Kind regards, Dmytro Skrypnyk ---------------------------------------------------
Das Auslesen de numerischen Zellen con readStr() funktioniert auch. Nur con el Carta Yo Problemas. Yo weiß no, Yo el Parámetro transferencia se. Was bedeutet el "L" antes "200.55"?
MERCI! |
|
|
| |
|
|
|
 RGH | Yo habe el neue DLL heruntergeladen. Como gelingt con usted el Lesen el numerischen Werte? En me scheint se como nichts verändert a haben. Bist Usted sicher, dass el DLL-Versión, el Usted hoch geladen hast, esta Fähigkeit besitzt? Poste veces Su aktuelles Ejemplo-Listing. Relacionado con la Carta bekommen wir entonces sicher auch hin.
Saludo Roland |
|
|
| XProfan X3Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 22.03.2016 ▲ |
|
|
|
|
 | @Christof:
Das L en c++ antes Stringkonstanten erspart MultiByteToWideChar, el Zeichenkette detrás de esto es como WideChar a transferencia. |
|
|
| |
|
|
|
 Christof Neuß | Hola Roland,
Así que el Lib scheint ya correcto a ser. Aber Achtung, lo funktioniert wohl sólo en XLSX-Archivos.
Hier mein Listing y en el Anhang mi XLSX-Expediente.
{$pushkeyword xlCreateXMLBookA}
{$pushkeyword xlCreateBookCA}
{$pushkeyword xlBookLoadA}
{$pushkeyword xlBookSaveA}
{$pushkeyword xlBookReleaseA}
{$pushkeyword xlBookGetSheetA}
{$pushkeyword xlSheetWriteStrA}
{$pushkeyword xlSheetWritenUMA}
{$pushkeyword xlSheetReadStrA}
{$pushkeyword xlSheetReadNumA}
{$pushkeyword dt}
{$clq}
Declarar hLibxl&, book&, sheet&
hLibxl& = ImportDLL("libxl.dll", "")
set("CallConv","CDECL")
Var Expediente$="Beispiel.xlsX"
Var ZahlGelesen!=0
Declarar Gelesen#
Dim Gelesen#, 256
proc xlSheetWriteNumD
parámetros s&, x&, y& , d!, f&
declarar d1&, d2&, 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& = xlCreateXMLBookA()
Imprimir book&
xlBookLoadA(book&, Expediente$)
IF book&
sheet& = xlBookGetSheetA(book&, 0)
Imprimir sheet&
IF sheet&
xlSheetWriteStrA(sheet&, 9,0, "Eintrag de XProfan: "+dt("getDate", 6), 0)
'xlSheetWriteNumD(sheet&, 10,0, 8888.88, 0)
Gelesen#=xlSheetReadStrA(sheet&, 5,0,0)
Imprimir STRING$(Gelesen#,0)
Gelesen#=xlSheetReadStrA(sheet&, 7,0,0)' Hier es una Zahl gespeichert.
Imprimir STRING$(Gelesen#,0)
ENDIF
xlBookSaveA(book&, Expediente$)
xlBookReleaseA(book&)
ENDIF
Imprimir "FERTIG!"
FreeDLL hLibXL&
WaitInput
FIN
|
 |
|
| |
|
|
|
 RGH | ¡Hola Christof,
el Carta un número como Zahl Yo auch con el Umwandlung en una Widestring (StringW) y el zusätzlichen Parámetro bislang no no hinbekommen. Lo landet siempre sólo una String en el Excel-Expediente.
Aber si Mi rutina xlSheetWriteNumD benutzt, klappt lo en Verbindung con el verbesserten Lesefunktion hervorragend.
Saludo Roland |
|
|
| XProfan X3Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 22.03.2016 ▲ |
|
|
|
|
 Christof Neuß | Hola Roland,
na, el klappt doch wirklich prima. Kann en efecto ser, dass con el geänderten Schreibfunktion tatsächlich sólo Cuerdas geschrieben voluntad puede. Aber entonces wäre el zusätzliche Parámetro irgendwie unnütz. Egal. So komme Yo zurecht. Vielen Dank! |
|
|
| |
|
|
|
 Christof Neuß | Hola si,
Su Solución con el 32-bit-Anteil interessiert mich natürlich auch weiterhin. Si el funktioniert, Yo auch una solución a la xls-Archivos. Und....sí... Yo rechne selten con Pagar el größer 4 Mrd. son.

Gracias! |
|
|
| |
|
|