Módulo
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 .

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 shared library external DLL so that the Add-In can be successfully attached.

LibreOffice searches the Add-in folder defined in the configuration for a suitable shared library DLL. To be recognized by LibreOffice, the shared library DLL 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.

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

### Functions of Shared Library AddIn DLL

At a minimum, the administrative functions GetFunctionCount and GetFunctionData must exist. Using these, the functions as well as parameter types and return values can be determined. As return values, the Double and String types are supported. As parameters, additionally the cell areas Double Array, String Array, and Cell Array are supported.

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
Duplo | 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

## Shared Library DLL functions

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

For all Shared Library DLL functions, the following applies:

CALLTYPE baleiro fn (fóra, in1, in2, ...)

Saída: Resultante valor

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

Returns the number of functions without the management functions of the reference parameter. Each function has a unique number between 0 and nCount-1. This number will be needed for the GetFunctionData and GetParameterDescription functions later.

Sintaxe

CALLTYPE baleiro GetFunctionCount (USHORT & nCount)

Parámetro

USHORT & nCount:

Saída: referencia a unha variable, que se quere para conter o número de add-in funcións. Por exemplo: Se o suplemento ofrece cinco funcións para $ [officename] Calc, entón nCount = 5.

### GetFunctionData ()

Determina toda a información importante sobre unha función Add-In.

Sintaxe

anular CALLTYPE GetFunctionData (USHORT & NNO, char * pFuncName, USHORT & nParamCount, Paramtype * peType, char * pInternalName)

Parámetro

USHORT & NNO:

Número de función entre 0 e nCount-1, incluso: entrada.

char * pFuncName:

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

USHORT & nParamCount:

Saída: Número de parámetros en función AddIn. Este número debe ser superior a 0, porque sempre hai un valor de resultado; o valor máximo é 16.

Paramtype * peType:

Saída: Punteiro a unha matriz de exactamente 16 variables do tipo Paramtype. As primeiras entradas nParamCount énchense co tipo adecuado de parámetro.

char * pInternalName:

Saída: Nome da función, como visto polo usuario, como aparece no Asistente de funcións . Pode conter tremas.

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

anular CALLTYPE GetParameterDescription (USHORT & NNO, USHORT & nParam, char * pName, char * pDesc)

Parámetro

USHORT & NNO:

Entrada: Número da función na biblioteca; entre 0 e nCount-1.

USHORT & nParam:

Entrada: Indica, para o cal parámetro a descrición é proporcionada; parámetros comezan en 1. Se nParam é 0, a propia descrición se quere que sexa subministrada en pDesc; neste caso, pName non ten ningún significado.

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 | A | 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 | A | 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
Len | ... | Seguinte eelemnto

### Matriz celular

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 | A | 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