Tambahan bagi Pemrograman LibreOffice Calc

Ikon Peringatan

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 dapat diperluas dengan Add-Ins, yang merupakan modul pemrograman eksternal yang menyediakan fungsi tambahan untuk bekerja dengan spreadsheet. Ini tercantum dalamFungsi Wisaya dalamAdd-Inkategori. Jika Anda ingin memprogram Add-in sendiri, Anda dapat mempelajari di sini fungsi mana yang harus diekspor oleh sehingga Add-In dapat berhasil dilampirkan.

LibreOffice mencari folder Add-in yang ditentukan dalam konfigurasi untuk yang sesuai . Untuk dikenali oleh LibreOffice, itu harus memiliki properti tertentu, seperti yang dijelaskan berikut ini. Informasi ini memungkinkan Anda untuk memprogram Add-In Anda sendiri Fungsi Wisaya dari 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.

Fungsi dari

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 area sel Double Array, String Array, danCell Array didukung.

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

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


fungsi

Setelah Anda akan menemukan deskripsi fungsi-fungsi tersebut, yang dipanggil di

Untuk semua fungsi, yang berikut ini berlaku:

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

(keluaran)

Input: Sejumlah jenis (dobel &, char *, dobel *, char **, area sel), di mana Sel area adalah larik tipe larik ganda, larik string, atau larik sel.

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

batal TIPE PANGGILAN GetFunctionCount (USHORT & nCount)

Parameter

USHORT &nCount:

Keluaran: Referensi ke variabel, yang seharusnya berisi jumlah fungsi Add-In. Sebagai contoh: Jika Add-In menyediakan 5 fungsi untuk LibreOffice Calc, maka nCount = 5.

DapatkanDataFungsi()

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: Nomor fungsi antara 0 dan n Hitung-1, secara inklusif.

char* pFuncName:

Keluaran: Nama fungsi seperti yang terlihat oleh pemrogram, seperti namanya dalam . Nama ini tidak menentukan nama yang digunakan dalam Fungsi Wisaya.

USHORT& nParamCount:

Output: Jumlah parameter dalam fungsi AddIn. Angka ini harus lebih besar dari 0, karena selalu ada nilai hasil; nilai maksimum adalah 16.

Paramtype* peType:

Output: Pointer ke array dengan tepat 16 variabel tipe Paramtype. Entri nParamCount pertama diisi dengan jenis parameter yang sesuai.

char* pInternalName:

Keluaran: Nama fungsi seperti yang terlihat oleh pengguna, seperti yang muncul di Fungsi Wisaya. Mungkin mengandung umlaut.

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

GetParameterDescription()

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

Sintaksis

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

Parameter

USHORT& nNo:

Input: Jumlah fungsi di perpustakaan; antara 0 dan nCount-1.

USHORT& nParam:

Input: Menunjukkan, untuk parameter yang mana uraian diberikan; parameter mulai dari 1. Jika nParam adalah 0, deskripsi itu sendiri seharusnya disediakan di pDesc; dalam hal ini, pName tidak memiliki arti.

char* pName:

Keluaran: Mengambil nama atau tipe parameter, misalnya, kata "Number" atau "String" atau "Date", dan sebagainya. Diimplementasikan dalam LibreOffice Calc as char[256].

char* pDesc:

Keluaran: Mengambil deskripsi parameter, misalnya, "Nilai, di mana semua akan dihitung." Diimplementasikan dalam 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 area sel. LibreOffice Calc membedakan antara tiga array yang berbeda, tergantung pada tipe datanya.

Susunan Ganda

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

Efek

Nama

Deskripsi

0

Kol1

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

2

Baris1

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

4

Tab1

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

6

Kol2

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

8

Baris2

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

10

Tab2

Nomor tabel di sudut kanan bawah area 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

Area sel, yang berisi nilai tipe data Teks dan diteruskan sebagai string array. Array string dalam LibreOffice Calc didefinisikan sebagai berikut:

Efek

Nama

Deskripsi

0

Kol1

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

2

Baris1

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

4

Tab1

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

6

Kol2

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

8

Baris2

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

10

Tab2

Nomor tabel di sudut kanan bawah area 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

LEN

...

Elemen berikutnya


Susunan Sel

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

Efek

Nama

Deskripsi

0

Kol1

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

2

Baris1

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

4

Tab1

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

6

Kol2

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

8

Baris2

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

10

Tab2

Nomor tabel di sudut kanan bawah area 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