1. Ders : PyUNO kütüphanesi ile makro yazalım
Giriş
LibreOffice için Python kullanarak betik yazılabiliyor.
Bu derste Python ile ofis yazılımı için ilk betiği nasıl yazabileceğimizi anlatmaya çalışıyoruz.
Kurulum
Ubuntu tabanlı dağıtımlarda aşağıdaki paketi kurmak gerekebilir.
sudo apt install libreoffice-script-provider-python
İlk ayarlar
ArcoLinux dağıtımında uno.py
kütüğünü aradık.
locate uno.py
Aşağıdaki gibi çıktı verdi.
/usr/lib/libreoffice/program/uno.py
/usr/lib/python3.12/site-packages/uno.py
Sonra bu kütüğe çalıştırma izni verdik.
sudo chmod +x /usr/lib/libreoffice/program/uno.py
Bu kütüğün bulunduğu dizini aşağıdaki gösterildiği gibi ortam değişkeni olarak ekliyoruz.
Ortam değişkeni
Eğer fish
kabuğu kullanıyorsanız ~/.config/fish/config.fish
kütüğüne, eğer bash
kullanıyorsanız ~/.bashrc
kütüğüne aşağıdaki ortam değişkenini ekleyiniz.
export PYTHONPATH="$PYTHONPATH:/usr/lib/libreoffice/program/"
Ekledikten sonra bilgisayarı tekrar başlatınız.
Çalışıyor mu?
Python makrolarının çalışıp çalışmadığını sınamak için LibreOffice yazılımında Araçlar -> Makrolar -> Makroları Yönet -> Python
yolunu izleyiniz.
Buradan Uygulama Makroları -> HelloWorld -> HelloWordPython
’u seçerek çalıştır tuşuna basınız.
Eğer yeni bir yazı kütüğü açıldı ve içine bir şeyler yazıldı ise Python çalışıyor demektir.
Makroları nereye kaydedeceğiz?
Linux altında dizin
/home/KULLANICI/.config/libreoffice/4/user/Scripts/python
Windows için
%APPDATA%\LibreOffice\4\user\Scripts\python
macOS için
~/Library/Application Support/LibreOffice/4/user/Scripts/python/
şeklindedir.
Linux için KULLANICI
yerine kendi kullanıcı isminiz gelecek.
Eğer Scripts/python
dizini yoksa oluşturunuz.
Selam verme
Belirtilen dizinde selam.py
ismi ile bir kütük oluşturup içine aşağıdaki bilgileri giriniz.
import uno
def selamVer():
belge = XSCRIPTCONTEXT.getDocument()
hücre = belge.Sheets[0]['A1']
hücre.setString("Selâmun Aleyküm")
return
Makroyu çalıştıralım
Makroyu çalıştırmak için Araçlar->Makrolar->Makro Çalıştır
yolunu izleyiniz.
Makrolarım
isimli kütüphaneden selam
ve selamVer
i seçip sonra da Çalıştır
düğmesine basınız.
Makro çalıştığında A1 hücresine Selâmun Aleyküm
yazması gerekiyor.
2. Ders : Basic dilinden Python’u çağıralım
Giriş
Bir önceki Python makro derslerine devam ediyoruz.
Bu derste Basic içinden Python’u nasıl çağırabileceğimizi öğrenmeye çalışacağız.
Python kütüğünü oluşturalım
Hatırlayabileceğiniz üzere python kütüklerin /home/KULLANICI/.config/libreoffice/4/user/Scripts/python
dizininde oluşturuyorduk.
Burada tarih.py
isimli bir kütük oluşturup içine aşağıdaki bilgileri girelim.
from datetime import datetime
def tarih():
return datetime.utcnow().strftime("%-d %B %A")
g_exportedScripts = (tarih,)
Basic içinden Python’u çağıralım
Bunun için LibreOffice yazılımını açınız.
Araçlar->Makrolar->Makroları Yönet->Basic
yolunu takip ediniz. Burada Makrolarım -> Standard -> Module1
seçili iken Düzenle
tuşuna basınız.
Gelen düzenleyiciye aşağıdaki kodu giriniz.
REM ***** BASIC *****
Function Gunlerden
hizmetSaglayici= ThisComponent.getScriptProvider()
betik = hizmetSaglayici.getScript("vnd.sun.star.script:tarih.py$tarih?language=Python&location=user")
Gunlerden = betik.invoke(array(), array(), array())
End Function
Dosya
bölümünden Kaydet
seçeneği ile makroyu kaydediniz.
Tarih işlevini sınayalım
Tekrar hesap tablosuna dönünüz.
Burada herhangi bir hücreye =GUNLERDEN()
işlevini girerseniz tarihin uzun olarak yazıldığını görebilirsiniz.
Örneğin bu gün 14 Mayıs Salı
yazıldı.
Kaynak :