Complement de programació del LibreOffice Calc

Icona d'avís

El mètode que es descriu tot seguit per ampliar el Calc amb complements no està actualitzat. Les interfícies segueixen sent vàlides i compatibles per assegurar la compatibilitat amb els complements existents; no obstant això, si voleu programar complements nous, cal que utilitzeu les noves funcions API.


El funcionament del LibreOffice Calc es pot ampliar mitjançant els complements, mòduls de programació externs que ofereixen funcions addicionals per treballar amb els fulls de càlcul. A l'Auxiliar de funcions, a la categoria Complement, s'enumeren els complements disponibles. Si voleu programar un complement, ací trobareu informació sobre les funcions que s'han d'exportar des de la per poder adjuntar correctament el complement.

El LibreOffice busca una a la carpeta de complements que s'ha definit a la configuració. Perquè el LibreOffice la detecti, la ha de tindre determinades propietats, tal com s'explica tot seguit. Esta informació vos permet programar el vostre propi complement per a l'Auxiliar de funcions del LibreOffice Calc.

El concepte de complement

Cada biblioteca de complement proporciona diverses funcions. Algunes funcions s'utilitzen per a l'administració. Podeu triar gairebé qualsevol nom per a les vostres funcions. No obstant això, també han de seguir certes regles pel que fa a l'entrada de paràmetres. Les restriccions de noms i de crida varien entre diferents plataformes.

Funcions de la

En tots els casos, les funcions administratives GetFunctionCount i GetFunctionData han d'existir. Gràcies a estes funcions, es poden determinar les funcions, els tipus de paràmetres i els valors de retorn. Com a valors de retorn, s'admeten els tipus Doble i Cadena. Com a paràmetres, s'admeten les àrees de cel·les Matriu doble, Matriu de cadena i Matriu de cel·les.

Els paràmetres es transmeten mitjançant referències; per tant, en teoria és possible modificar estos valors. No obstant això, el LibreOffice Calc no ho permet perquè no té sentit fer-ho en fulls de càlcul.

Les biblioteques es poden actualitzar durant el temps d'execució i les funcions administratives en poden analitzar els continguts. Disposeu d'informació sobre cada funció: nombre i tipus de paràmetres, noms de les funcions internes i externes i un número administratiu.

Es criden les funcions de manera sincronitzada i es retornen els resultats immediatament. També es poden cridar funcions de temps real (funcions asíncrones); tanmateix, no s'expliquen detalladament a causa de la seua complexitat.

Informació general de la interfície

El nombre màxim de paràmetres en una funció de complement adjunta al LibreOffice Calc és 16: un valor de retorn i un màxim de 15 paràmetres d'entrada.

Els tipus de dades es defineixen de la manera següent:

Tipus de dades

Definició

CALLTYPE

En el Windows: FAR PASCAL (_far _pascal)

Altrament: per defecte (valor per defecte del sistema operatiu)

USHORT

Enter sense signe de 2 bytes

DOBLE

format dependent de la plataforma, de 8 bytes

Paramtype

Dependent de la plataforma, com int

PTR_DOUBLE =0 busca en un doble

PTR_STRING =1 busca en una cadena que acaba amb 0

PTR_DOUBLE_ARR =2 busca en una matriu doble

PTR_STRING_ARR =3 busca en una matriu de cadenes

PTR_CELL_ARR =4 busca en una matriu de cel·la

NONE =5


: funcions

Tot seguit trobareu una descripció d'estes funcions, que es criden a la .

Les regles següents s'apliquen a totes les funcions de :

void CALLTYPE fn(out, in1, in2, ...)

Resultat: valor del resultat

Entrada: qualsevol nombre de tipus (doble&, car*, doble*, car**, àrea de cel·les), on l'àrea de cel·les és una matriu de tipus doble, de cadena o de cel·la.

GetFunctionCount()

Retorna el nombre de funcions sense les funcions de gestió del paràmetre de referència. Cada funció té un número únic entre el 0 i nCount-1. Este número és necessari per a les funcions GetFunctionData i GetParameterDescription.

Sintaxi

void CALLTYPE GetFunctionCount(USHORT& nCount)

Paràmetre

USHORT &nCount:

Eixida: referència a una variable, que ha de contindre el nombre de funcions de complements. Per exemple: si el complement proporciona 5 funcions per al LibreOffice Calc, nCount=5.

GetFunctionData()

Determina tota la informació important sobre una funció de complement.

Sintaxi

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

Paràmetre

USHORT& nNo:

Entrada: número de funció, entre 0 i nCount-1 (inclosos).

char* pFuncName:

Resultat: el nom de la funció tal com el veu el programador, tal com s'anomena a la . Este nom no determina el nom que s'utilitza en l'Auxiliar de funcions.

USHORT& nParamCount:

Eixida: nombre de paràmetres de la funció de complement. Este nombre ha de ser més gran que 0, ja que sempre hi ha un valor resultant; el valor màxim és 16.

Paramtype* peType:

Resultat: busca a una matriu d'exactament 16 variables del tipus Paramtype. Les primeres entrades nParamCount s'omplen amb el tipus de paràmetre corresponent.

char* pInternalName:

Resultat: el nom de la funció tal com el veu l'usuari, tal com apareix a l'Auxiliar de funcions. Pot contindre dièresis.

Els paràmetres pFuncName i pInternalName són matrius de caràcters, implementats al LibreOffice Calc amb una mida de 256.

GetParameterDescription()

Proporciona una descripció breu de la funció de complement i dels paràmetres que la componen. Com a opció, la funció es pot utilitzar per mostrar una descripció d'una funció i dels paràmetres a l'Auxiliar de funcions.

Sintaxi

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

Paràmetre

USHORT& nNo:

Entrada: número de la funció a la biblioteca, entre 0 i nCount-1.

USHORT& nParam:

Entrada: indica per a quin paràmetre es proporciona la descripció; els paràmetres comencen per l'1. Si nParam és 0, s'ha d'introduir la mateixa descripció a pDesc; en este cas, pName no té cap significat.

char* pName:

Resultat: afig el nom o el tipus de paràmetre, per exemple la paraula "Nombre" o "Cadena" o "Data", etc. S'ha implementat al LibreOffice Calc com a char[256].

char* pDesc:

Resultat: afig la descripció del paràmetre, per exemple, "Valor del qual s'ha de calcular la suma." S'ha implementat al LibreOffice Calc com a char[256].

Les matrius de caràcters pName i pDesc s'han implementat al LibreOffice Calc amb una mida de 256. Tingueu en compte que l'espai disponible a l'Auxiliar de funcions és limitat i, per tant, no es poden utilitzar els 256 caràcters.

Àrees de cel·les

Les taules següents contenen informació sobre quines estructures de dades han de proporcionar-se a un mòdul de programa extern per passar les àrees de les cel·les. El LibreOffice Calc distingeix entre tres matrius diferents, segons el tipus de dades.

Matriu doble

Com a paràmetre, es pot introduir una àrea de cel·les amb valors del tipus Nombre/Doble. Al LibreOffice Calc, les matrius dobles es defineixen de la manera següent:

Desplaçament

Nom

Descripció

0

Col1

Número de columna de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

2

Fila1

Número de fila de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

4

Tab1

Número de taula de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

6

Col2

Número de columna de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

8

Fila2

Número de fila de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

10

Tab2

Número de taula de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

12

Comptatge

Nombre dels elements següents. Les cel·les buides no es tenen en compte ni es calculen.

14

Col

Número de columna de l'element. Numeració a partir de 0.

16

Fila

Número de fila de l'element; numeració a partir de 0.

18

Pestanya

Número de taula de l'element; numeració a partir de 0.

20

Error

Número d'error, on el valor 0 es defineix com a "no error." Si l'element ve d'una cel·la de fórmula, la fórmula determina el valor d'error.

22

Valor

Variable IEEE de 8 bytes del tipus doble/punt flotant

30

...

Element següent


Matriu de cadenes

Una àrea de cel·les, que conté valors de tipus de dades Text i es considera com a matriu de cadenes. Una matriu de cadenes al LibreOffice Calc es defineix de la manera següent:

Desplaçament

Nom

Descripció

0

Col1

Número de columna de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

2

Fila1

Número de fila de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

4

Tab1

Número de taula de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

6

Col2

Número de columna de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

8

Fila2

Número de fila de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

10

Tab2

Número de taula de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

12

Comptatge

Nombre dels elements següents. Les cel·les buides no es tenen en compte ni es calculen.

14

Col

Número de columna de l'element. Numeració a partir de 0.

16

Fila

Número de fila de l'element; numeració a partir de 0.

18

Pestanya

Número de taula de l'element; numeració a partir de 0.

20

Error

Número d'error, on el valor 0 es defineix com a "no error." Si l'element ve d'una cel·la de fórmula, la fórmula determina el valor d'error.

22

Len

Longitud de la cadena següent, inclòs el byte zero de tancament. Si la longitud (el byte zero de tancament inclòs) és igual a un valor inexacte, s'afig un segon byte zero a la cadena per obtindre un valor exacte. Per tant, Len es calcula mitjançant ((StrLen+2)&~1).

24

Cadena

Cadena amb byte de tancament zero

24+Len

...

Element següent


Matriu de cel·les

Les matrius de cel·les s'utilitzen per cridar les àrees de cel·les que contenen tant text com nombres. Una matriu de cel·les al LibreOffice Calc es defineix de la manera següent:

Desplaçament

Nom

Descripció

0

Col1

Número de columna de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

2

Fila1

Número de fila de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

4

Tab1

Número de taula de la cantonada superior esquerra de l'àrea de cel·les; numeració a partir de 0.

6

Col2

Número de columna de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

8

Fila2

Número de fila de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

10

Tab2

Número de taula de la cantonada inferior dreta de l'àrea de cel·les; numeració a partir de 0.

12

Comptatge

Nombre dels elements següents. Les cel·les buides no es tenen en compte ni es calculen.

14

Col

Número de columna de l'element. Numeració a partir de 0.

16

Fila

Número de fila de l'element; numeració a partir de 0.

18

Pestanya

Número de taula de l'element; numeració a partir de 0.

20

Error

Número d'error, on el valor 0 es defineix com a "no error." Si l'element ve d'una cel·la de fórmula, la fórmula determina el valor d'error.

22

Tipus

Tipus de contingut de la cel·la, 0 == Doble, 1 == Cadena

24

Value o Len

Si Tipus == 0: variable IEEE de tipus doble/punt flotant de 8 bytes

Si Tipus == 1: longitud de la cadena següent, inclòs el byte zero de tancament. Si la longitud (el byte zero de tancament inclòs) és igual a un valor inexacte, s'afig un segon byte zero a la cadena per obtindre un valor exacte. Per tant, Len es calcula mitjançant ((StrLen+2)&~1).

26 if Type==1

Cadena

Si Tipus == 1: la cadena acaba en un byte 0.

32 o 26+Len

...

Element següent