Tambahan bagi Pemrograman LibreOffice Calc

warning

Metode memperluas Calc oleh Add-Ins yang dijelaskan di bawah ini sudah usang. Antarmuka masih valid dan didukung, untuk memastikan kompatibilitas dengan Add-in yang ada, tetapi untuk pemrograman Add-in baru Anda harus menggunakan yang baruFungsi 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 so that the Add-In can be successfully attached.

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

Konsep Tambahan

Setiap Tambah-di perpustakaan menyediakan beberapa fungsi. Beberapa fungsi digunakan untuk keperluan administrasi. Anda dapat memilih hampir semua nama untuk fungsi Anda sendiri. Namun, mereka juga harus mengikuti aturan-aturan tertentu tentang pemindahan parameter. Konvensi penamaan dan panggilan yang berbeda bervariasi untuk platform yang berbeda.

Functions of

Minimal, fungsi administrasiGetFunctionCount dan GetFunctionData harus ada. Dengan menggunakan ini, fungsi serta tipe parameter dan nilai pengembalian dapat ditentukan. Sebagai nilai pengembalian, tipe Double dan String didukung. Sebagai parameter, tambahan wilayah sel Double Array, String Array, danCell Array didukung.

Parameter dilewatkan menggunakan rujukan. Oleh karena itu, perubahan nilai-nilai ini pada dasarnya memungkinkan. Namun, ini tidak didukung dalam LibreOffice Calc karena tidak masuk akal dalam lembar sebar.

Perpustakaan dapat dimuat ulang selama runtime dan isinya dapat dianalisis dengan fungsi administrasi. Untuk setiap fungsi, tersedia informasi tentang jumlah dan jenis parameter, nama fungsi internal dan eksternal dan nomor administrasi.

Fungsi-fungsi tersebut disebut secara sinkron dan segera mengembalikan hasilnya. Fungsi waktu yang nyata (fungsi asinkron) juga dimungkinkan; Namun, mereka tidak dijelaskan secara rinci karena kerumitannya.

Informasi umum tentang antarmuka

Jumlah maksimum parameter dalam fungsi Add-In yang terlampir pada LibreOffice Calc adalah 16: satu nilai balik dan maksimum 15 parameter input fungsi.

Jenis data ditentukan sebagai berikut:

Jenis data

Definisi

CALLTYPE

Di bawah Windows: FAR PASCAL (_far _pascal)

Lainnya: default (standar khusus sistem operasi)

USHORT

Tipe partisi sebagai bilangan bulat tak bertanda 8-bit

DOUBLE

Format tergantung platform 8 byte

Paramtype

Tergantung platform seperti int

Trackpad;Pointer;Klik;Sentuh;Ganda;Tombol;Trackball;

PTR_STRING = 1 pointer ke string yang diakhiri nol

PTR_DOUBLE_ARR = 2 pointer ke array ganda

PTR_STRING_ARR = 3 pointer ke array string

PTR_CELL_ARR = 4 pointer ke array sel

NONE =5


functions

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

For all functions, the following applies:

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

Output: Resulting value

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

Mengembalikan jumlah fungsi tanpa fungsi manajemen dari parameter referensi. Setiap fungsi memiliki angka unik antara 0 dan nCount-1. Nomor ini akan diperlukan untuk GetFunctionData dan GetParameterDescription berfungsi nanti.

Sintaksis

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameter

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

Menentukan semua informasi penting tentang fungsi Add-In.

Sintaksis

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

Parameter

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

Parameter pFuncName dan pInternalName adalah array char, yang diimplementasikan dengan ukuran 256 dalam LibreOffice Calc.

GetParameterDescription()

Memberikan keterangan singkat tentang fungsi Add-In dan parameternya. Sebagai pilihan, fungsi ini dapat digunakan untuk menampilkan keterangan fungsi dan parameter di Wisaya Fungsi.

Sintaksis

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

Parameter

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 dan pDesc adalah array char; diimplementasikan dalam LibreOffice Calc dengan ukuran 256. Harap perhatikan bahwa ruang yang tersedia di Fungsi Wisaya terbatas dan bahwa 256 karakter tidak dapat sepenuhnya digunakan.

Wilayah sel

Tabel berikut berisi informasi tentang struktur data mana yang harus disediakan oleh modul program eksternal untuk melewati wilayah sel. LibreOffice Calc membedakan antara tiga larik yang berbeda, tergantung pada tipe datanya.

Susunan Ganda

Sebagai parameter, wilayah sel dengan nilai-nilai tipe Number / Double dapat dilewati. Larik ganda dalam LibreOffice Calc didefinisikan sebagai berikut:

Ofset

Nama

Keterangan

0

Kol1

Nomor kolom di sudut kiri atas wilayah sel. Penomoran dimulai pada 0.

2

Baris1

Nomor baris di sudut kiri atas wilayah sel; penomoran dimulai pada 0.

4

Tab1

Nomor tabel di sudut kiri atas wilayah sel; penomoran dimulai pada 0.

6

Kol2

Nomor kolom di sudut kanan bawah wilayah sel. Penomoran dimulai pada 0.

8

Baris2

Nomor baris di sudut kanan bawah wilayah sel; penomoran dimulai pada 0.

10

Tab2

Nomor tabel di sudut kanan bawah wilayah sel; penomoran dimulai pada 0.

12

Cacah

Jumlah elemen berikut. Sel kosong tidak dihitung atau dilewatkan.

14

Kol

Nomor kolom elemen. Penomoran dimulai pada 0.

16

Baris

Jumlah baris elemen; penomoran dimulai pada 0.

18

Tab

Nomor tabel elemen; penomoran dimulai pada 0.

20

Kesalahan

Nomor kesalahan, di mana nilai 0 didefinisikan sebagai "tidak ada kesalahan." Jika elemen berasal dari sel rumus, nilai kesalahan ditentukan oleh rumus.

22

Nilai

8 byte variabel IEEE tipe double / floating point

30

...

Elemen berikutnya


Susunan String

Wilayah sel, yang berisi nilai tipe data Teks dan diteruskan sebagai string larik. Larik string dalam LibreOffice Calc didefinisikan sebagai berikut:

Ofset

Nama

Keterangan

0

Kol1

Nomor kolom di sudut kiri atas wilayah sel. Penomoran dimulai pada 0.

2

Baris1

Nomor baris di sudut kiri atas wilayah sel; penomoran dimulai pada 0.

4

Tab1

Nomor tabel di sudut kiri atas wilayah sel; penomoran dimulai pada 0.

6

Kol2

Nomor kolom di sudut kanan bawah wilayah sel. Penomoran dimulai pada 0.

8

Baris2

Nomor baris di sudut kanan bawah wilayah sel; penomoran dimulai pada 0.

10

Tab2

Nomor tabel di sudut kanan bawah wilayah sel; penomoran dimulai pada 0.

12

Cacah

Jumlah elemen berikut. Sel kosong tidak dihitung atau dilewatkan.

14

Kol

Nomor kolom elemen. Penomoran dimulai pada 0.

16

Baris

Jumlah baris elemen; penomoran dimulai pada 0.

18

Tab

Nomor tabel elemen; penomoran dimulai pada 0.

20

Kesalahan

Nomor kesalahan, di mana nilai 0 didefinisikan sebagai "tidak ada kesalahan." Jika elemen berasal dari sel rumus, nilai kesalahan ditentukan oleh rumus.

22

Len

Panjang dari string berikut, termasuk menutup byte nol. Jika panjang termasuk penutupan byte nol sama dengan nilai ganjil, byte nol kedua ditambahkan ke string sehingga nilai genap tercapai. Oleh karena itu, Len dihitung menggunakan ((StrLen+2)&~1).

24

String

String dengan menutup byte nol

24+Len

...

Elemen berikutnya


Susunan Sel

Array sel digunakan untuk memanggil wilayah sel yang berisi teks dan juga angka. Larik sel dalam LibreOffice Calc didefinisikan sebagai berikut:

Ofset

Nama

Keterangan

0

Kol1

Nomor kolom di sudut kiri atas wilayah sel. Penomoran dimulai pada 0.

2

Baris1

Nomor baris di sudut kiri atas wilayah sel; penomoran dimulai pada 0.

4

Tab1

Nomor tabel di sudut kiri atas wilayah sel; penomoran dimulai pada 0.

6

Kol2

Nomor kolom di sudut kanan bawah wilayah sel. Penomoran dimulai pada 0.

8

Baris2

Nomor baris di sudut kanan bawah wilayah sel; penomoran dimulai pada 0.

10

Tab2

Nomor tabel di sudut kanan bawah wilayah sel; penomoran dimulai pada 0.

12

Cacah

Jumlah elemen berikut. Sel kosong tidak dihitung atau dilewatkan.

14

Kol

Nomor kolom elemen. Penomoran dimulai pada 0.

16

Baris

Jumlah baris elemen; penomoran dimulai pada 0.

18

Tab

Nomor tabel elemen; penomoran dimulai pada 0.

20

Kesalahan

Nomor kesalahan, di mana nilai 0 didefinisikan sebagai "tidak ada kesalahan." Jika elemen berasal dari sel rumus, nilai kesalahan ditentukan oleh rumus.

22

Jenis

Jenis konten sel, 0 == Double, 1 == String

24

Nilai atau Panjang

Jika tipe == 0: 8 byte variabel IEEE tipe double / floating point

Jika tipe == 1: Panjang dari string berikut, termasuk menutup byte nol. Jika panjang termasuk penutupan byte nol sama dengan nilai ganjil, byte nol kedua ditambahkan ke string sehingga nilai genap tercapai. Oleh karena itu, Len dihitung menggunakan ((StrLen+2)&~1).

26 jika tipe==1

String

Jika tipe == 1: String dengan menutup byte nol

LEN

...

Elemen berikutnya


Mohon dukung kami!