Complement de programaci贸 del LibreOffice Calc

warning

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.


LibreOffice Calc can be expanded by Add-Ins, which are external programming modules providing additional functions for working with spreadsheets. These are listed in the Function Wizard in the Add-In category. If you would like to program an Add-In yourself, you can learn here which functions must be exported by the so that the Add-In can be successfully attached.

LibreOffice searches the Add-in folder defined in the configuration for a suitable . To be recognized by LibreOffice, the must have certain properties, as explained in the following. This information allows you to program your own Add-In for Function Wizard of 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.

Functions of

En tots els casos, les funcions administratives GetFunctionCount i GetFunctionData han d'existir. Gr脿cies a aquestes 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 aquests 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 seva 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

DOUBLE

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


functions

Following you will find a description of those functions, which are called at the .

For all functions, the following applies:

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

Output: Resulting value

Input: Any number of types (double&, char*, double*, char**, Cell area), where the Cell area is an array of types double array, string array, or cell array.

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. Aquest n煤mero 茅s necessari per a les funcions GetFunctionData i GetParameterDescription.

Sintaxi

void CALLTYPE GetFunctionCount(USHORT& nCount)

Par脿metre

USHORT &nCount:

Output: Reference to a variable, which is supposed to contain the number of Add-In functions. For example: If the Add-In provides 5 functions for LibreOffice Calc, then 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:

Input: Function number between 0 and nCount-1, inclusively.

char* pFuncName:

Output: Function name as seen by the programmer, as it is named in the . This name does not determine the name used in the Function Wizard.

USHORT& nParamCount:

Output: Number of parameters in AddIn function. This number must be greater than 0, because there is always a result value; the maximum value is 16.

Paramtype* peType:

Output: Pointer to an array of exactly 16 variables of type Paramtype. The first nParamCount entries are filled with the suitable type of parameter.

char* pInternalName:

Output: Function name as seen by the user, as it appears in the Function Wizard. May contain umlauts.

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:

Input: Number of the function in the library; between 0 and nCount-1.

USHORT& nParam:

Input: Indicates, for which parameter the description is provided; parameters start at 1. If nParam is 0, the description itself is supposed to be provided in pDesc; in this case, pName does not have any meaning.

char* pName:

Output: Takes up the parameter name or type, for example, the word "Number" or "String" or "Date", and so on. Implemented in LibreOffice Calc as char[256].

char* pDesc:

Output: Takes up the description of the parameter, for example, "Value, at which the universe is to be calculated." Implemented in LibreOffice Calc as 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:

Offset

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:

Offset

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'afegeix un segon byte zero a la cadena per a obtenir 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:

Offset

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'afegeix un segon byte zero a la cadena per a obtenir 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


Ens cal la vostra ajuda!