OpenOffice是一個免費的、開源的辦公套裝,集成了允許開發(fā)者用不同語言進行開發(fā)的API。Python-UNO讓你可以在Python環(huán)境下使用OpenOffice。本文簡要介紹了一下Python-UNO的使用方法。
OpenOffice.org作為一款免費的開源Office套裝,提供了強大的、兼容的解決方案,這為它樹立了相當好的口碑。據(jù)它所稱,下載次數(shù)已經(jīng)超過了五千萬次了,而且它可以在多個平臺上運行。開發(fā)者很難忽視這樣一個項目,這也是OpenOffice.org為什么要提供API允許開發(fā)者在不同語言環(huán)境下使用OpenOffice.org的原因了。
當然了,你可能很難想像Python也包含在OpenOffice.org允許使用的語言列表中,因為Python會讓事情變得“太簡單”了。而Python-UNO恰恰把一切變成可能。OpenOffice.org利用了通用網(wǎng)絡(luò)對象(Universal Network Objects,UNO)。這項技術(shù)使得OpenOffice.org可以與不同語言寫成的部件兼容協(xié)作。Python-UNO提供了使用它的一個Python接口。
Python-UNO包含在OpenOffice.org里,所以不需要再安裝其他東西了。不幸的是,這有一個缺點。由于OpenOffice.org 2.0里包含的Python版本是2.3.5,所以無法使用最近添加的功能。當然也有人在努力解決這個問題,讓OpenOffice.org跟新一些的Python版本兼容。
也有一些linux發(fā)行版默認安裝Python的時候也配置了Python-UNO使之可以工作,比如Ubuntu就是這么做的。你可以運行Python嘗試import uno模塊看看行不行。如果可以的話,就讓我們開始使用Python-UNO吧。
連接OpenOffice.org
首先我們先連接OpenOffice.org,只有幾個小步驟,很簡單。在連接OpenOffice.org之前,我們要先確保它一直在監(jiān)聽。這包括在啟動它的時候傳遞一個字符串給它。首先,確保OpenOffice.org完全退出(如果用的是Windows系統(tǒng),還需要從系統(tǒng)盤中退出OpenOffice.org),然后打開終端,切換到OpenOffice.org的安裝目錄,并進入執(zhí)行文件所在目錄。接下來,我們將打開OpenOffice.org Writer,傳入一個參數(shù),允許OpenOffice.org監(jiān)聽到我們之后要做的連接:
這樣打開的OpenOffice.org跟普通方式打開的外觀是沒有差別的。我們傳遞的參數(shù)創(chuàng)建了一個UNO接收器,它會監(jiān)聽我們以便通過Python-UNO和OpenOffice.org的API進行連接。在新窗口打開程序所在目錄,找到OpenOffice.org的Python版本并執(zhí)行之,這樣會進入可交互的解釋器。另外,如果你知道你的Linux發(fā)行版默認安裝的Python里已經(jīng)包括了Python-UNO,那你可以像往常一樣打開Python。
第一步當然就是導入Python-UNO模塊啦,名字是uno:
必須做的第一件事是導入一個本地的組件上下文。如果你想徹底弄清楚什么是組件上下文以及它的用途,你可以自行g(shù)oogle。這里,我們稍稍解釋一下。一個上下文管理器由一個服務(wù)管理器和相關(guān)對象組成,把它當成服務(wù)管理器存在的環(huán)境就是了。
那服務(wù)管理器是什么呢?顧名思義,服務(wù)管理器用來管理服務(wù)。它的名字就是其功能的簡單定義。最后解釋一下服務(wù)。服務(wù)就是綁定了一系列特定任務(wù)的對象。比如說,有一個特定的服務(wù)負責加載和管理文檔,另一個用來連接OpenOffice.org的設(shè)置。服務(wù)是由服務(wù)管理器進行管理的,服務(wù)管理器存在于一個組件上下文。當然啦,事情沒那么簡單,但是這里我們不需要用到其他的知識。
簡單介紹了一下組件上下文,服務(wù)管理器和服務(wù)這幾個概念后,讓我們繼續(xù),創(chuàng)建一個本地的組件上下文。我們之后會用它來獲取OpenOffice.org的組件上下文:
現(xiàn)在我們有了一個本地組件上下文。接下來,我們還要獲取UnoUrlResolver服務(wù)。這個服務(wù)用于連接OpenOffice.org。我們需要利用服務(wù)管理器的createInstanceWithContext方法,這個方法在local.ServiceManager中。參數(shù)設(shè)為我們想要的服務(wù)名稱,和上下文實例:
這樣我們就可以連接OpenOffice.org了。很簡單,只要調(diào)用一個方法,把參數(shù)設(shè)成我們啟動OpenOffice.org Writer時傳遞的參數(shù)就可以了。之后,我們就可以利用OpenOffice.org的組件上下文,通過OpenOffice.org的API對它進行操作了:
參數(shù)跟啟動OpenOffice.org時的參數(shù)僅有微小的區(qū)別,只是加了“StarOffice.ComponentContext”請求OpenOffice.org的組件上下文而已。我們還添加了個協(xié)議(uno)在最前面。現(xiàn)在,我們已經(jīng)連接上了OpenOffice.org。
使用桌面服務(wù)
既然我們可以使用OpenOffice.org的API,那么讓我們來操作一下文件吧。我早前提到過有一個服務(wù)是負責當前文檔的。這個服務(wù)的名稱是“com.sun.star.frame.Desktop”。通過這個服務(wù)我們就可以玩轉(zhuǎn)啟動OpenOffice.org時創(chuàng)建的OpenOffice.org Writer文檔了。首先,我們需要用前面說過的createInstanceWrithContext方法拿到服務(wù),參數(shù)是服務(wù)名稱和context。
很好,現(xiàn)在我們有了Desktop服務(wù)了,也有能力加載文檔并管理文檔了。我們先嘗試修改當前文檔。用getCurrentComponent方法:
修改文檔前,要先創(chuàng)建一個游標cursor。這很簡單:
通過游標,我們可以往文檔里添加一些內(nèi)容。先試著加一段簡單的字符串:
執(zhí)行上面代碼后,你應該可以看到文檔中多出一行文本。加入斷行符可以向文檔中加入換行:
簡單的縮進也很容易實現(xiàn)。只要加入一個縮進符“t”:
當然了,重復性地添加文本是無效的,這就是我們要操作游標的原因了。比如說,我們想把大一號的字體。這很容易通過游標屬性實現(xiàn)。UNO對象包括了屬性,這些屬性可以用很簡單的方法調(diào)用進行修改。在我們改變游標字體尺寸前,我們先獲取目前的字體大小:
如你所見,字體尺寸屬性的名稱叫“CharHeight”。調(diào)用另一個方法可以修改這個屬性。讓我們把字體大小改成20:
現(xiàn)在字體大小已經(jīng)改變了,我們可以添加一些字體大小為20的文本進文檔里了:
不只是文字尺寸可以改變,基本上所有東西都能改變。讓我們改變字體和字體粗細:
淺談表格
工作中經(jīng)常要用到表格,讓我們看一下怎么在Python-UNO里使用表格。先打開一個新的文檔:
在新的空白文檔上開始使用表格。我們要做的表格包含五個國家,還有每個國家的人口。所以,這個表格會有6行,其中一行是表頭;還有2列。下面是創(chuàng)建表格的命令:
當然,我們需要把表格的行數(shù)和列數(shù)傳遞給population。下面是初始化函數(shù):
如果你看一下打開的文檔,你還什么都看不到。你要插入這個表格,才看得到。表格的插入跟文本插入是類似的:
現(xiàn)在可以開始插入表格內(nèi)容了。包括兩個步驟,說明每個單元格的名字,然后插入文本。表格的第一行命名為“A”,第一列命名為“1”.這個命名模式持續(xù)到表格最后,每一個單元格的名字都是行名和列名的組合。先插入表頭:
接下來,可以把國家信息填進去了:
結(jié)論
OpenOffice.org是相當強大的工具,特別是它還提供了可以被很多不同語言調(diào)用的API。幸運的是,這些語言里包括了Python,即Python-UNO。Python開發(fā)者們可以導入這個模塊,然后創(chuàng)建一個本地組件上下文環(huán)境,這個環(huán)境能用來連接OpenOffice.org的上下文環(huán)境。連接后,開發(fā)者可以修改文檔。雖然這篇文章只涉及了插入文本和表格還有改變字體屬性,但是OpenOffice.org的API還提供了很多功能。有很多方法可以修改文本和表格。雖然我們只講了OpenOffice.org的Writer軟件,但是還有OpenOffice.org套裝的其他應用可以使用。
-
python
+關(guān)注
關(guān)注
56文章
4783瀏覽量
84473
原文標題:Python操作OpenOffice
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論