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 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 para que o suplemento poida de 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 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

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 de

Abaixo pode 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:

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 . 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 $ [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:

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 $ [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

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

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

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 eelemnto


Precisamos da súa axuda!