Suplemento para programación no Calc do LibreOffice

Contido

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

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 engadidos, 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 Engadidos. Se desexa programar un engadido, pode aprender aquí que funcións deben ser exportadas pola biblioteca compartidaDLL externa para que o suplemento poida de 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 compartidaDLL debe ter certas propiedades, como se explica a continuación. Esta información permítelle programar o seu propio engadido 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 Calc do LibreOffice, 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 Calc do LibreOffice é 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 de bibliotecas compartidasDLL

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

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

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

Saída: Valor resultante

Entrada: Calquera número de tipos (double&, char *, double*, char **, Area de celas), onde a Área de celas é unha matriz de tipos double array, string array ou 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:

Saída: Referencia a unha variábel, que se conta que ctonteña o número de funcións de engadidos. Por exemplo: Se o engadido ofrece cinco funcións para o Calc do $ [officename], entón 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:

Entrada: Número de función entre 0 e nCount-1, incluídos.

char* pFuncName:

Saída: Nome da función como o ve o programador, como se chama na biblioteca compartidaDLL. Este nome non determina o nome empregado no Asistente de funcións.

USHORT& nParamCount:

Saída: Número de parámetros na función de engadido. 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 variábeis do tipo Paramtype. As nParamCount primeiras entradas énchense co tipo adecuado de parámetro.

char* pInternalName:

Saída: Nome da función, como o e 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 Calc do LibreOffice.

### 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 ObterDescricionParametro(USHORT& nNo, USHORT& nParam, char* pNome, char* pDesc)

Parámetro

USHORT& nNo:

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

USHORT& nParam:

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

char* pName:

Saída: Toma o nome ou tipo do parámetro, por exemplo, a palabra «Número» ou «Cadea» ou «Data», etc. No Calc do LibreOffice impleméntase como char[256].

char* pDesc:

Saída: Toma a descrición do parámetro, por exemplo, «Valor no que hai que calcular o universo». Implementado no Calc do LibreOffice como char[256].

pName e pDesc son matrices de caracteres; aplicado en Calc do LibreOffice 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 Calc do LibreOffice 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 | Número de erro, onde o valor de 0 está definido como «sen erros». Se o elemento provén dunha cela de fórmula o valor do erro vén determinado pola fórmula.
22 | Valor | 8 bytes variable IEEE do tipo double / punto flotante
30 | ... | Seguinte elemento

### 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 Calc do LibreOffice 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 | Número de erro, onde o valor de 0 está definido como «sen erros». Se o elemento provén dunha cela de fórmula o valor do erro vén determinado pola fórmula.
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 elemento

### 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 Calc do LibreOffice 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 | Número de erro, onde o valor de 0 está definido como «sen erros». Se o elemento provén dunha cela de fórmula o valor do erro vén determinado pola fórmula.
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 elemento

Precisamos da súa axuda!