Contido
Índice 🔎︎

# Add-in para Programación en $ [officename] Calc

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 biblioteca compartida DLL externa para que o suplemento pode ser anexado con éxito.

O LibreOffice procura no cartafol de suplementos indicado na configuración se existe unha biblioteca compartidaDLL axeitada. Para ser recoñecida polo LibreOffice, a biblioteca compartida DLL 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 biblioteca compartidaDLL suplementaria

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 Biblioteca compartidaDLL

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

Para todas as funcións con bibliotecas compartidas DLL , 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 Shared LibraryDLL. 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