Home > 備忘録 > libreoffice の macro(basic) > python を呼び出す( 98 )
aa.py の demo2 関数を呼びだす。
sub Demo
Dim a(2),b(0),c(0) As Variant
Dim objSheet as Object
objSheet=ThisComponent.CurrentController.Activesheet
scpr=ThisComponent.getScriptProvider
scmod=scpr.getScript("vnd.sun.star.script:aa.py$demo2?language=Python&location=user")
'aに引数を与える
a(0)=2015 '数値
a(1)="青森" '文字列
a(2)="aaaaaaa" '文字列
'b,cについては勉強不足で分かりません
ret=scmod.invoke(a,b,c)
End Subフォルダ(/home/ユーザー名/.config/libreoffice/4/user/Scripts/python)が存在しなければ作成すること。
/home/ユーザー名/.config/libreoffice/4/user/Scripts/python/aa.py
#coding: utf-8
import uno
def demo2(*args):
doc=XSCRIPTCONTEXT.getDocument()
sheet=doc.CurrentController.getActiveSheet()
#args[0]=2015,args[1]="青森",args[2]="aaaaaaa"が返ってくる
sheet.getCellRangeByName("AB1").Value=args[0] #数値
sheet.getCellRangeByName("AC2").String=args[1] #文字列
sheet.getCellByPosition(0,5).String=args[2] #文字列
#文字位置の指定
sheet.getCellByPosition(0,5).HoriJustify=uno.Enum('com.sun.star.table.CellHoriJustify','CENTER') #水平:STANDARD,LEFT,CENTER,RIGHT
sheet.getCellByPosition(0,5).VertJustify=uno.Enum('com.sun.star.table.CellVertJustify','TOP') #垂直:STANDARD,TOP,CENTER,BOTTOM
#文字サイズを指定
sheet.getCellRangeByName("AB1").CharHeight=14
sheet.getCellRangeByName("AC2").CharHeightAsian=12