Suplemento para Programación no Calc do $ [officename]

warning

O método de estender Calc por add-ins que está descrito no seguinte está desactualizados. As interfaces aínda son válidas e apoiar, para asegurar compatibilidade coa existente Add-Ins, pero para programando un novo add-ins que pode usar o novo funcións da API .


O Calc do $ [officename] pode ser ampliado con suplementos, que son módulos de programación externos que fornecen funcións adicionais para o traballo con follas de cálculo. Estes son listados no Asistente de funcións , na categoría Suplementos. Se desexa programar un suplemento, podes aprender aquí que funcións deben ser exportadas pola para que o suplemento pode ser anexado con éxito.

O LibreOffice procura no cartafol de suplementos indicado na configuración se existe unha axeitada. Para ser recoñecida polo LibreOffice, a debe ter certas propiedades, como se explica a continuación. Esta información permite programar o seu propio suplemento para o Asistente de funcións do Calc do LibreOffice.

O Concepto Add-In

Cada biblioteca Add-in ofrece diversas funcións. Algunhas funcións son utilizados para fins administrativos. Pode escoller practicamente calquera nome para as súas propias funcións. Con todo, eles tamén deben seguir certas regras relativas a paso de parámetros. As convencións de nomenclatura exactas e chamando variar para diferentes plataformas.

Funcións de

Como mínimo, as funcións administrativas GetFunctionCount e GetFunctionData debe existir. Usando estas, as funcións, así como tipo de parámetros e valores de retorno pode ser determinada. Como valores de retorno, os tipos de Casal e de corda son soportados. Como parámetros, adicionalmente, as áreas de células Double Array , Array cadea e matriz celular dispoñible.

Os parámetros son pasados ​​mediante referencias. Polo tanto, un cambio destes valores é basicamente posible. Con todo, este non é soportado no $ [officename] Calc, pois non ten sentido dentro de follas de cálculo.

As bibliotecas poden recargarse durante a execución e os seus contidos poden ser analizados por as funcións de administración. Para cada función, hai información dispoñible sobre conta e tipo de parámetros, nomes de funcións internas e externas e un número administrativo.

As funcións son chamadas de forma síncrona e voltar seus resultados inmediatamente. Funcións de tempo real (funcións asíncrono) tamén son posibles; con todo, eles non son explicadas en detalle en virtude da súa complexidade.

Información xeral sobre a interface

O número máximo de parámetros nunha función Add-In ligado ao $ [officename] Calc é de 16: un valor de retorno e un máximo de 15 parámetros de entrada de función.

Os tipos de datos son definidos como segue:

Os tipos de datos

Definición

CALLTYPE

En Windows: FAR PASCAL (_far _pascal)

Outros: estándar (sistema operativo estándar específico)

USHORT

2 Byte non asinado Enteiros

DOUBLE

Formato dependente de plataforma de 8 bytes

Paramtype

Como int dependente de plataforma

PTR_DOUBLE = 0 punteiro para un dobre

PTR_STRING = 1 punteiro para unha cadea terminada en cero

PTR_DOUBLE_ARR = 2 punteiro para unha matriz de parella

PTR_STRING_ARR = 3 punteiro para unha matriz de cadea

PTR_CELA_ARR = 4 punteiro para unha matriz de células

Ningún


Funcións

Abaixo, atopará unha descrición desas funcións, que son chamados pola .

Para todas as funcións con , aplícase o seguinte:

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

Saída: Valor resultante

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()

Devolve o número de funcións sen as funcións do parámetro de referencia de xestión. Cada función ten un número exclusivo entre 0 e nCount-1. Este número será necesario para o GetFunctionData e GetParameterDescription funcións máis tarde.

Sintaxe

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parámetro

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 toda a información importante sobre unha función Add-In.

Sintaxe

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

Parámetro

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.

Os parámetros pFuncName e pInternalName son matrices de caracteres, que son aplicados con tamaño 256 en $ [officename] Calc.

GetParameterDescription()

Ofrece unha breve descrición da función Add-In e os seus parámetros. Como unha opción, esta función pode usarse para mostrar unha descrición da función e parámetro no Asistente de funcións .

Sintaxe

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

Parámetro

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].

pName e pDesc ​​son matrices de caracteres; aplicado en $ [officename] Calc co tamaño 256. Teña en conta que o espazo dispoñible no Función Asistente é limitado e que os 256 caracteres non pode ser plenamente utilizado.

Áreas de células

As táboas a continuación conteñen información sobre as estruturas de datos debe ser proporcionada por un módulo de programa externo, a fin de pasar áreas móbiles. $ [Officename] Calc distingue entre tres matrices diferentes, dependendo do tipo de datos.

Double Array

Como un parámetro, unha área de celas con valores do número / tipo dobre pode ser pasado. Unha matriz de parella no $ [officename] Calc defínese do seguinte xeito:

Desprazamento

Name

Descrición

0

Col

Número da columna na esquina superior esquerda da zona da célula. Numeración comeza en 0.

2

Fila

Número da liña na parte superior esquerda da área de células; numeración comeza en 0.

4

Tabulación

Número de mesa na esquina superior esquerda da zona de células; numeración comeza en 0.

6

Col

Número de columna no canto inferior dereito da área de cela. Numeración comeza en 0.

8

Fila

Número da liña na parte inferior dereita da área de células; numeración comeza en 0.

10

Tab2

Número de mesa no ángulo inferior dereito da área de cela; numeración comeza en 0.

12

Conta

Número dos seguintes elementos. As celas vacías non son contadas ou pasado.

14

Col

O número da columna do elemento. Numeración comeza en 0.

16

Fila

Número da liña do elemento; numeración comeza en 0.

18

Tabulación

Número da táboa do elemento; numeración comeza en 0.

20

Erro

Error number, where the value 0 is defined as "no error." If the element comes from a formula cell the error value is determined by the formula.

22

Valor

8 bytes variable IEEE do tipo double / punto flotante

30

...

Seguinte eelemnto


Matriz de cadea de caracteres

A área de celas que contén os valores do tipo de datos de texto e é pasada como unha matriz de cadea. A matriz de cadea en $ [officename] Calc defínese do seguinte xeito:

Desprazamento

Name

Descrición

0

Col

Número da columna na esquina superior esquerda da zona da célula. Numeración comeza en 0.

2

Fila

Número da liña na parte superior esquerda da área de células; numeración comeza en 0.

4

Tabulación

Número de mesa na esquina superior esquerda da zona de células; numeración comeza en 0.

6

Col

Número de columna no canto inferior dereito da área de cela. Numeración comeza en 0.

8

Fila

Número da liña na parte inferior dereita da área de células; numeración comeza en 0.

10

Tab2

Número de mesa no ángulo inferior dereito da área de cela; numeración comeza en 0.

12

Conta

Número dos seguintes elementos. As celas vacías non son contadas ou pasado.

14

Col

O número da columna do elemento. Numeración comeza en 0.

16

Fila

Número da liña do elemento; numeración comeza en 0.

18

Tabulación

Número da táboa do elemento; numeración comeza en 0.

20

Erro

Error number, where the value 0 is defined as "no error." If the element comes from a formula cell the error value is determined by the formula.

22

Len

Duración do seguinte secuencia de caracteres, incluíndo o peche byte cero. Se a lonxitude do peche incluíndo cero bytes é igual a un valor impar un segundo byte cero se engade á cadea, de xeito que un mesmo valor é alcanzar. Polo tanto, Len calcúlase usando ((strlen + 2) & ~ 1).

24

Cadea

Cadea con peche cero byte

24+Len

...

Seguinte eelemnto


Matriz de celas

Conxuntos de células son usadas para chamar áreas de células que conteñen texto, así como números. A matriz de células no $ [officename] Calc defínese do seguinte xeito:

Desprazamento

Name

Descrición

0

Col

Número da columna na esquina superior esquerda da zona da célula. Numeración comeza en 0.

2

Fila

Número da liña na parte superior esquerda da área de células; numeración comeza en 0.

4

Tabulación

Número de mesa na esquina superior esquerda da zona de células; numeración comeza en 0.

6

Col

Número de columna no canto inferior dereito da área de cela. Numeración comeza en 0.

8

Fila

Número da liña na parte inferior dereita da área de células; numeración comeza en 0.

10

Tab2

Número de mesa no ángulo inferior dereito da área de cela; numeración comeza en 0.

12

Conta

Número dos seguintes elementos. As celas vacías non son contadas ou pasado.

14

Col

O número da columna do elemento. Numeración comeza en 0.

16

Fila

Número da liña do elemento; numeración comeza en 0.

18

Tabulación

Número da táboa do elemento; numeración comeza en 0.

20

Erro

Error number, where the value 0 is defined as "no error." If the element comes from a formula cell the error value is determined by the formula.

22

Tipo

Tipo de contido da cela, 0 == Dobre, 1 == Corda

24

Valor ou Len

Se tipo == 0: 8 bytes variable IEEE do tipo double / punto flotante

Se tipo == 1: Duración do seguinte secuencia de caracteres, incluíndo o peche byte cero. Se a lonxitude do peche incluíndo cero bytes é igual a un valor impar un segundo byte cero se engade á cadea, de xeito que un mesmo valor é alcanzar. Polo tanto, Len calcúlase usando ((strlen + 2) & ~ 1).

26 se o tipo == 1

Cadea

Se tipo == 1: String con peche cero byte

32 ou 26 + Len

...

Seguinte eelemnto


Precisamos da súa axuda!