Tillegg for programmering i LibreOffice Calc

warning

Metoden for å utvide Calc med tillegg som er beskrevet i det følgende er utdatert. Grensesnittene er fortsatt gyldige og støttes for å sikre kompatibilitet med eksisterende tillegg, men for programmering av nye tillegg bør du bruke de nye API-funksjonene.


LibreOffice Calc kan utvides med tilleggsprogrammer, som er eksterne programmeringsmoduler som gir tilleggsfunksjoner for arbeid med regneark. Disse er oppført i Funksjonsveiviseren i kategorien Tillegg. Hvis du ønsker å programmere et tillegg selv, kan du lære her hvilke funksjoner som må eksporteres av slik at tillegget kan kobles til.

LibreOffice søker i tilleggsmappen definert i konfigurasjonen etter et passende . For å bli gjenkjent av LibreOffice, må ha visse egenskaper, som forklart i det følgende. Denne informasjonen lar deg programmere ditt eget tillegg for Funksjonsveiviser av LibreOffice Calc.

Tilleggskonseptet

Hvert tilleggsbibliotek har flere funksjoner. Noen funksjoner brukes til administrative formål. Du kan velge nesten hvilket som helst navn for dine egne funksjoner. Imidlertid må de også følge visse regler angående parameteroverføring. De nøyaktige navne- og anropskonvensjonene varierer for ulike plattformer.

Funksjoner til

Som et minimum, de administrative funksjonene GetFunctionCount og GetFunctionData må eksistere. Ved hjelp av disse kan funksjonene samt parametertyper og returverdier bestemmes. Som returverdier støttes typene Double og String. Som parametere, i tillegg celleområdene Double Array, String Array link> og Cell Array støttes.

Parametre sendes ved hjelp av referanser. Derfor er en endring av disse verdiene i utgangspunktet mulig. Dette støttes imidlertid ikke i LibreOffice Calc fordi det ikke gir mening i regneark.

Biblioteker kan lastes inn på nytt under kjøring, og innholdet kan analyseres av de administrative funksjonene. For hver funksjon er det tilgjengelig informasjon om antall og type parametere, interne og eksterne funksjonsnavn og et administrativt nummer.

Funksjonene kalles synkront og returnerer resultatene umiddelbart. Sanntidsfunksjoner (asynkrone funksjoner) er også mulig; de er imidlertid ikke forklart i detalj på grunn av deres kompleksitet.

Generell informasjon om grensesnittet

Maksimalt antall parametere i en tilleggsfunksjon knyttet til LibreOffice Calc er 16: én returverdi og maksimalt 15 funksjonsinndataparametere.

Datatypene angis som følger:

Datatyper

Definisjon

CALLTYPE

Under Windows: FAR PASCAL (far pascal)

Annet: standard (operativsystemspesifik standard)

USHORT

2 byte usignert heltall

DOUBLE

8-byte platformsavhengig format

Paramtype

Plattformavhengig som int

PTR_DOUBLE =0 peker på en dobbel

PTR_STRING =1 peker på en nullterminert streng

PTR_DOUBLE_ARR =2 peker på en dobbel matrise

PTR_STRING_ARR =3 peker på en strengmatrise

PTR_CELL_ARR =4 peker på en cellematrise

NONE=5


-funksjoner

Nedenfor finner du en beskrivelse av disse funksjonene, som kalles på .

For alle -funksjoner gjelder følgende:

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

Output: Resultatverdi

Inndata: Et hvilket som helst antall typer (double&, char*, double*, char**, celleområde), der celleområdet er en rekke typer dobbel matrise, strengmatrise eller cellematrise.

GetFunctionCount()

Returnerer antall funksjoner uten administrasjonsfunksjonene til referanseparameteren. Hver funksjon har et unikt tall mellom 0 og nCount-1. Dette nummeret vil være nødvendig for GetFunctionData og GetParameterDescription fungerer senere.

Syntaks

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameter

USHORT &nCount:

Utdata: Referanse til en variabel, som skal inneholde antall tilleggsfunksjoner. For eksempel: Hvis tillegget gir 5 funksjoner for LibreOffice Calc, så nCount=5.

GetFunctionData()

Bestemmer all viktig informasjon om en tilføyelsesfunksjon.

Syntaks

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

Parameter

USHORT& nNo:

Input: Funksjonsnummer mellom 0 og nCount-1, inkludert.

char* pFuncName:

Utgang: Funksjonsnavnet sett av programmereren, slik det heter i . Dette navnet bestemmer ikke navnet som brukes i Funksjonsveiviseren.

USHORT& nParamCount:

Utgang: Antall parametere i tilleggsfunksjonen. Dette tallet må være større enn 0, fordi det alltid er en resultatverdi; maksimumsverdien er 16.

Paramtype* peType:

Utdata: Peker til en matrise med nøyaktig 16 variabler av typen Paramtype. De første nParamCount-oppføringene er fylt med passende parametertype.

char* pInternalName:

Utdata: Funksjonsnavnet sett av brukeren, slik det vises i Funksjonsveiviseren. Kan inneholde omlyder.

Parameterne pFuncName og pInternalName er char arrays, som er implementert med størrelse 256 i LibreOffice Calc.

GetParameterDescription()

Gir en kort beskrivelse av tilleggsfunksjonen og dens parametere. Som et alternativ kan denne funksjonen brukes til å vise en funksjon og parameterbeskrivelse i Funksjonsveiviseren.

Syntaks

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

Parameter

USHORT& nNo:

Input: Nummer på funksjonen i biblioteket; mellom 0 og nCount-1.

USHORT& nParam:

Input: Indikerer, for hvilken parameter beskrivelsen er gitt; parametere starter på 1. Hvis nParam er 0, skal selve beskrivelsen gis i pDesc; i dette tilfellet har ikke pName noen betydning.

char* pName:

Utdata: Tar opp parameternavnet eller -typen, for eksempel ordet "Number" eller "String" eller "Date", og så videre. Implementert i LibreOffice Calc som char[256].

char* pDesc:

Utdata: Tar opp beskrivelsen av parameteren, for eksempel "Verdi som universet skal beregnes til." Implementert i LibreOffice Calc som char[256].

pName og pDesc er char matriser; implementert i LibreOffice Calc med størrelse 256. Vær oppmerksom på at plassen som er tilgjengelig i Funksjonsveiviseren er begrenset og at de 256 tegnene ikke kan brukes fullt ut.

Celleområder

Følgende tabeller inneholder informasjon om hvilke datastrukturer som må leveres av en ekstern programmodul for å passere celleområder. LibreOffice Calc skiller mellom tre forskjellige matriser, avhengig av datatypen.

Dobbelt matrise

Som en parameter kan et celleområde med verdier av typen Number/Double sendes. En dobbel matrise i LibreOffice Calc er definert som følger:

Offset

Navn

Beskrivelse

0

Kolonne 1

Kolonnenummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

2

Rad 1

Radnummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

4

Tabell 1

Tabellnummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

6

Kolonne 2

Kolonnenummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

8

Rad 2

Radnummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

10

Tabell 2

Tabellnummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

12

Tell

Antallet av følgende elementer. Tomme celler telles eller passeres ikke.

14

uKolonne

Kolonnenummer. Nummerering begynner ved 0.

16

Rad

Radnummer. Nummerering begynner ved 0.

18

Tabell 1

Radnummer. Nummerering begynner ved 0.

20

Feil

Feilnummer, der verdien 0 er definert som "ingen feil." Hvis elementet kommer fra en formelcelle, bestemmes feilverdien av formelen.

22

Verdi

8 byte IEEE-variabel av typen dobbel/flytende komma

30

...

Neste element


Strengematrise

Et celleområde som inneholder verdier av datatypen Tekst og sendes som en strengmatrise. En strengmatrise i LibreOffice Calc er definert som følger:

Offset

Navn

Beskrivelse

0

Kolonne 1

Kolonnenummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

2

Rad 1

Radnummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

4

Tabell 1

Tabellnummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

6

Kolonne 2

Kolonnenummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

8

Rad 2

Radnummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

10

Tabell 2

Tabellnummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

12

Tell

Antall av følgende elementer. Tomme celler telles eller passeres ikke.

14

uKolonne

Kolonnenummer. Nummerering begynner ved 0.

16

Rad

Radnummer. Nummerering begynner ved 0.

18

Tabell 1

Radnummer. Nummerering begynner ved 0.

20

Feil

Feilnummer, der verdien 0 er definert som "ingen feil." Hvis elementet kommer fra en formelcelle, bestemmes feilverdien av formelen.

22

Len

Lengden på følgende streng, inkludert avsluttende nullbyte. Hvis lengden inkludert avsluttende nullbyte er lik en oddeverdi, legges en andre nullbyte til strengen slik at en partallsverdi oppnås. Derfor beregnes Len ved å bruke ((StrLen+2)&~1).

24

Streng

Streng med avsluttende null byte

24+Len

...

Neste element


Cellematrise

Cellematriser brukes til å ringe celleområder som inneholder tekst så vel som tall. En cellematrise i LibreOffice Calc er definert som følger:

Offset

Vavn

Beskrivelse

0

Kolonne 1

Kolonnenummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

2

Rad 1

Radnummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

4

Tabell 1

Tabellnummer i det øvre venstre hjørne av celleområdet. Nummerering begynner ved 0.

6

Kolonne 2

Kolonnenummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

8

Rad 2

Radnummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

10

Tabell 2

Tabellnummer i det nedre høyre hjørne av celleområdet. Nummerering begynner ved 0.

12

Tell

Antall følgende elementer. Tomme celler telles eller passeres ikke.

14

uKolonne

Kolonnenummer. Nummerering begynner ved 0.

16

Rad

Radnummer. Nummerering begynner ved 0.

18

Tabell 1

Radnummer. Nummerering begynner ved 0.

20

Feil

Feilnummer, der verdien 0 er definert som "ingen feil." Hvis elementet kommer fra en formelcelle, bestemmes feilverdien av formelen.

22

Type

Type celleinnhold, 0 == Dobbel, 1 == Streng

24

Verdi eller Len

Hvis type == 0: 8 byte IEEE-variabel av typen dobbelt/flytende komma

Hvis type == 1: Lengden på følgende streng, inkludert avsluttende nullbyte. Hvis lengden inkludert avsluttende nullbyte er lik en oddeverdi, legges en andre nullbyte til strengen slik at en partallsverdi oppnås. Derfor beregnes Len ved å bruke ((StrLen+2)&~1).

26 hvis type==1

Streng

Hvis type == 1: Streng med avsluttende null byte

32 eller 26+Len

...

Neste element


Supporter oss!