RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡(jiǎn)要介紹一下Python-UNO的使用方法

馬哥Linux運(yùn)維 ? 2018-01-04 14:54 ? 次閱讀

OpenOffice是一個(gè)免費(fèi)的、開(kāi)源的辦公套裝,集成了允許開(kāi)發(fā)者用不同語(yǔ)言進(jìn)行開(kāi)發(fā)的API。Python-UNO讓你可以在Python環(huán)境下使用OpenOffice。本文簡(jiǎn)要介紹了一下Python-UNO的使用方法。

OpenOffice.org作為一款免費(fèi)的開(kāi)源Office套裝,提供了強(qiáng)大的、兼容的解決方案,這為它樹(shù)立了相當(dāng)好的口碑。據(jù)它所稱(chēng),下載次數(shù)已經(jīng)超過(guò)了五千萬(wàn)次了,而且它可以在多個(gè)平臺(tái)上運(yùn)行。開(kāi)發(fā)者很難忽視這樣一個(gè)項(xiàng)目,這也是OpenOffice.org為什么要提供API允許開(kāi)發(fā)者在不同語(yǔ)言環(huán)境下使用OpenOffice.org的原因了。

當(dāng)然了,你可能很難想像Python也包含在OpenOffice.org允許使用的語(yǔ)言列表中,因?yàn)镻ython會(huì)讓事情變得“太簡(jiǎn)單”了。而Python-UNO恰恰把一切變成可能。OpenOffice.org利用了通用網(wǎng)絡(luò)對(duì)象(Universal Network Objects,UNO)。這項(xiàng)技術(shù)使得OpenOffice.org可以與不同語(yǔ)言寫(xiě)成的部件兼容協(xié)作。Python-UNO提供了使用它的一個(gè)Python接口。

Python-UNO包含在OpenOffice.org里,所以不需要再安裝其他東西了。不幸的是,這有一個(gè)缺點(diǎn)。由于OpenOffice.org 2.0里包含的Python版本是2.3.5,所以無(wú)法使用最近添加的功能。當(dāng)然也有人在努力解決這個(gè)問(wèn)題,讓OpenOffice.org跟新一些的Python版本兼容。

也有一些linux發(fā)行版默認(rèn)安裝Python的時(shí)候也配置了Python-UNO使之可以工作,比如Ubuntu就是這么做的。你可以運(yùn)行Python嘗試import uno模塊看看行不行。如果可以的話,就讓我們開(kāi)始使用Python-UNO吧。

連接OpenOffice.org

首先我們先連接OpenOffice.org,只有幾個(gè)小步驟,很簡(jiǎn)單。在連接OpenOffice.org之前,我們要先確保它一直在監(jiān)聽(tīng)。這包括在啟動(dòng)它的時(shí)候傳遞一個(gè)字符串給它。首先,確保OpenOffice.org完全退出(如果用的是Windows系統(tǒng),還需要從系統(tǒng)盤(pán)中退出OpenOffice.org),然后打開(kāi)終端,切換到OpenOffice.org的安裝目錄,并進(jìn)入執(zhí)行文件所在目錄。接下來(lái),我們將打開(kāi)OpenOffice.org Writer,傳入一個(gè)參數(shù),允許OpenOffice.org監(jiān)聽(tīng)到我們之后要做的連接:

這樣打開(kāi)的OpenOffice.org跟普通方式打開(kāi)的外觀是沒(méi)有差別的。我們傳遞的參數(shù)創(chuàng)建了一個(gè)UNO接收器,它會(huì)監(jiān)聽(tīng)我們以便通過(guò)Python-UNO和OpenOffice.org的API進(jìn)行連接。在新窗口打開(kāi)程序所在目錄,找到OpenOffice.org的Python版本并執(zhí)行之,這樣會(huì)進(jìn)入可交互的解釋器。另外,如果你知道你的Linux發(fā)行版默認(rèn)安裝的Python里已經(jīng)包括了Python-UNO,那你可以像往常一樣打開(kāi)Python。

第一步當(dāng)然就是導(dǎo)入Python-UNO模塊啦,名字是uno:

必須做的第一件事是導(dǎo)入一個(gè)本地的組件上下文。如果你想徹底弄清楚什么是組件上下文以及它的用途,你可以自行g(shù)oogle。這里,我們稍稍解釋一下。一個(gè)上下文管理器由一個(gè)服務(wù)管理器和相關(guān)對(duì)象組成,把它當(dāng)成服務(wù)管理器存在的環(huán)境就是了。

那服務(wù)管理器是什么呢?顧名思義,服務(wù)管理器用來(lái)管理服務(wù)。它的名字就是其功能的簡(jiǎn)單定義。最后解釋一下服務(wù)。服務(wù)就是綁定了一系列特定任務(wù)的對(duì)象。比如說(shuō),有一個(gè)特定的服務(wù)負(fù)責(zé)加載和管理文檔,另一個(gè)用來(lái)連接OpenOffice.org的設(shè)置。服務(wù)是由服務(wù)管理器進(jìn)行管理的,服務(wù)管理器存在于一個(gè)組件上下文。當(dāng)然啦,事情沒(méi)那么簡(jiǎn)單,但是這里我們不需要用到其他的知識(shí)。

簡(jiǎn)單介紹了一下組件上下文,服務(wù)管理器和服務(wù)這幾個(gè)概念后,讓我們繼續(xù),創(chuàng)建一個(gè)本地的組件上下文。我們之后會(huì)用它來(lái)獲取OpenOffice.org的組件上下文:

現(xiàn)在我們有了一個(gè)本地組件上下文。接下來(lái),我們還要獲取UnoUrlResolver服務(wù)。這個(gè)服務(wù)用于連接OpenOffice.org。我們需要利用服務(wù)管理器的createInstanceWithContext方法,這個(gè)方法在local.ServiceManager中。參數(shù)設(shè)為我們想要的服務(wù)名稱(chēng),和上下文實(shí)例:

簡(jiǎn)要介紹一下Python-UNO的使用方法

這樣我們就可以連接OpenOffice.org了。很簡(jiǎn)單,只要調(diào)用一個(gè)方法,把參數(shù)設(shè)成我們啟動(dòng)OpenOffice.org Writer時(shí)傳遞的參數(shù)就可以了。之后,我們就可以利用OpenOffice.org的組件上下文,通過(guò)OpenOffice.org的API對(duì)它進(jìn)行操作了:

簡(jiǎn)要介紹一下Python-UNO的使用方法

參數(shù)跟啟動(dòng)OpenOffice.org時(shí)的參數(shù)僅有微小的區(qū)別,只是加了“StarOffice.ComponentContext”請(qǐng)求OpenOffice.org的組件上下文而已。我們還添加了個(gè)協(xié)議(uno)在最前面。現(xiàn)在,我們已經(jīng)連接上了OpenOffice.org。

使用桌面服務(wù)

既然我們可以使用OpenOffice.org的API,那么讓我們來(lái)操作一下文件吧。我早前提到過(guò)有一個(gè)服務(wù)是負(fù)責(zé)當(dāng)前文檔的。這個(gè)服務(wù)的名稱(chēng)是“com.sun.star.frame.Desktop”。通過(guò)這個(gè)服務(wù)我們就可以玩轉(zhuǎn)啟動(dòng)OpenOffice.org時(shí)創(chuàng)建的OpenOffice.org Writer文檔了。首先,我們需要用前面說(shuō)過(guò)的createInstanceWrithContext方法拿到服務(wù),參數(shù)是服務(wù)名稱(chēng)和context。

簡(jiǎn)要介紹一下Python-UNO的使用方法

很好,現(xiàn)在我們有了Desktop服務(wù)了,也有能力加載文檔并管理文檔了。我們先嘗試修改當(dāng)前文檔。用getCurrentComponent方法:

修改文檔前,要先創(chuàng)建一個(gè)游標(biāo)cursor。這很簡(jiǎn)單:

通過(guò)游標(biāo),我們可以往文檔里添加一些內(nèi)容。先試著加一段簡(jiǎn)單的字符串:

執(zhí)行上面代碼后,你應(yīng)該可以看到文檔中多出一行文本。加入斷行符可以向文檔中加入換行:

簡(jiǎn)單的縮進(jìn)也很容易實(shí)現(xiàn)。只要加入一個(gè)縮進(jìn)符“t”:

當(dāng)然了,重復(fù)性地添加文本是無(wú)效的,這就是我們要操作游標(biāo)的原因了。比如說(shuō),我們想把大一號(hào)的字體。這很容易通過(guò)游標(biāo)屬性實(shí)現(xiàn)。UNO對(duì)象包括了屬性,這些屬性可以用很簡(jiǎn)單的方法調(diào)用進(jìn)行修改。在我們改變游標(biāo)字體尺寸前,我們先獲取目前的字體大小:

如你所見(jiàn),字體尺寸屬性的名稱(chēng)叫“CharHeight”。調(diào)用另一個(gè)方法可以修改這個(gè)屬性。讓我們把字體大小改成20:

現(xiàn)在字體大小已經(jīng)改變了,我們可以添加一些字體大小為20的文本進(jìn)文檔里了:

不只是文字尺寸可以改變,基本上所有東西都能改變。讓我們改變字體和字體粗細(xì):

淺談表格

工作中經(jīng)常要用到表格,讓我們看一下怎么在Python-UNO里使用表格。先打開(kāi)一個(gè)新的文檔:

在新的空白文檔上開(kāi)始使用表格。我們要做的表格包含五個(gè)國(guó)家,還有每個(gè)國(guó)家的人口。所以,這個(gè)表格會(huì)有6行,其中一行是表頭;還有2列。下面是創(chuàng)建表格的命令:

當(dāng)然,我們需要把表格的行數(shù)和列數(shù)傳遞給population。下面是初始化函數(shù):

如果你看一下打開(kāi)的文檔,你還什么都看不到。你要插入這個(gè)表格,才看得到。表格的插入跟文本插入是類(lèi)似的:

現(xiàn)在可以開(kāi)始插入表格內(nèi)容了。包括兩個(gè)步驟,說(shuō)明每個(gè)單元格的名字,然后插入文本。表格的第一行命名為“A”,第一列命名為“1”.這個(gè)命名模式持續(xù)到表格最后,每一個(gè)單元格的名字都是行名和列名的組合。先插入表頭:

接下來(lái),可以把國(guó)家信息填進(jìn)去了:

結(jié)論

OpenOffice.org是相當(dāng)強(qiáng)大的工具,特別是它還提供了可以被很多不同語(yǔ)言調(diào)用的API。幸運(yùn)的是,這些語(yǔ)言里包括了Python,即Python-UNO。Python開(kāi)發(fā)者們可以導(dǎo)入這個(gè)模塊,然后創(chuàng)建一個(gè)本地組件上下文環(huán)境,這個(gè)環(huán)境能用來(lái)連接OpenOffice.org的上下文環(huán)境。連接后,開(kāi)發(fā)者可以修改文檔。雖然這篇文章只涉及了插入文本和表格還有改變字體屬性,但是OpenOffice.org的API還提供了很多功能。有很多方法可以修改文本和表格。雖然我們只講了OpenOffice.org的Writer軟件,但是還有OpenOffice.org套裝的其他應(yīng)用可以使用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84624

原文標(biāo)題:Python操作OpenOffice

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python庫(kù)的twisted簡(jiǎn)介安裝和使用方法

    Py之twisted:Python庫(kù)之twisted簡(jiǎn)介、安裝、使用方法等詳細(xì)攻略
    發(fā)表于 12-25 10:03

    Python庫(kù)的PyMySQL簡(jiǎn)介安裝及使用方法

    Py之PyMySQL:Python庫(kù)之PyMySQL的簡(jiǎn)介、安裝、使用方法之詳細(xì)攻略
    發(fā)表于 12-26 10:40

    Python庫(kù)的Shutil簡(jiǎn)介和安裝及使用方法

    Py之Shutil:Python庫(kù)之Shutil簡(jiǎn)介、安裝、使用方法之詳細(xì)攻略
    發(fā)表于 12-27 16:46

    Python庫(kù)的Xlrd簡(jiǎn)介和安裝及使用方法

    Py之Xlrd:Python庫(kù)之Xlrd簡(jiǎn)介、安裝、使用方法之詳細(xì)攻略
    發(fā)表于 12-27 16:46

    Python庫(kù)的ipykernel簡(jiǎn)介安裝及使用方法

    Py之ipykernel:Python庫(kù)之ipykernel簡(jiǎn)介、安裝、使用方法之詳細(xì)攻略
    發(fā)表于 12-27 16:47

    python庫(kù)之basemap安裝和使用方法

    Py之basemap:python庫(kù)之basemap的簡(jiǎn)介、安裝、使用方法之詳細(xì)攻略
    發(fā)表于 12-28 10:24

    請(qǐng)問(wèn)一下緩沖器和譯碼器的使用方法

    本帖最后由 sunboy25 于 2019-5-16 09:54 編輯 我想問(wèn)一下,有誰(shuí)知道哪個(gè)教程中有介紹三態(tài)緩沖器和譯碼器在電路的使用方法
    發(fā)表于 05-15 22:55

    介紹一下8255A芯片的使用方法

    本次我們介紹一下8255A芯片的使用方法在對(duì)8255A進(jìn)行編程操作時(shí)候,我們只需要了解三個(gè)步驟:(1)控制端口寫(xiě)控制字;(2)8255A端口地址計(jì)算;(3)對(duì)應(yīng)端口讀/寫(xiě)數(shù)據(jù)。8255A控制字
    發(fā)表于 07-29 07:37

    總結(jié)一下串口的幾種使用方法

    使用方法對(duì)以后的開(kāi)發(fā)還是很有幫助的。有關(guān)串口的知識(shí)我在之前的博客中有介紹:點(diǎn)擊鏈接跳轉(zhuǎn).僅向上位機(jī)打印調(diào)試信息單純利用串口向上位機(jī)打印調(diào)試信息,程序如下:void USART1_Init( uin...
    發(fā)表于 02-10 08:03

    ModelSim的簡(jiǎn)要使用方法

    ModelSim的簡(jiǎn)要使用方法,感興趣的小伙伴們可以瞧瞧。
    發(fā)表于 11-10 14:20 ?4次下載

    電流表的使用方法_鉗型電流表的使用方法及圖解

     電流表是指用來(lái)測(cè)量交、直流電路中電流的儀表。在電路圖中,電流表的符號(hào)為“圈A”。電流值以“安”或“A“為標(biāo)準(zhǔn)單位。本文主要介紹一下電流表的使用方法以及鉗型電流表的使用方法及圖解,
    發(fā)表于 02-08 10:18 ?11.6w次閱讀

    python中的字典(dict)對(duì)象以及其使用方法

    本文通過(guò)以英文的形式全面講解了python中的字典(dict)對(duì)象以及其使用方法。
    發(fā)表于 05-15 10:00 ?1次下載

    Python基礎(chǔ)教程之Python界面程序開(kāi)發(fā)應(yīng)用技術(shù)的詳細(xì)資料概述

    本文介紹Python 開(kāi)發(fā)界面程序的基本技術(shù)情況,簡(jiǎn)要分析了各種技術(shù)的優(yōu)劣,并著重探討了其中WxPython 界面庫(kù)和Tkinter 界面庫(kù)的使
    發(fā)表于 10-24 17:24 ?11次下載

    錫膏廠家淺談一下焊錫絲的正確使用方法

    一下具體正確使用方法:1、焊錫方法要正確,使用正確的焊接方法,不但可以省時(shí),還能減少錫渣的產(chǎn)生。2、焊錫絲焊接而成的焊點(diǎn),只可以作為零件之間導(dǎo)電與散熱之用,不能作為力的支撐點(diǎn)。3、盡
    的頭像 發(fā)表于 06-15 14:21 ?1001次閱讀
    錫膏廠家淺談<b class='flag-5'>一下</b>焊錫絲的正確<b class='flag-5'>使用方法</b>?

    分享一下STM32基于CubeMX獨(dú)立看門(mén)狗的使用方法

    項(xiàng)目里面需要加個(gè)獨(dú)立看門(mén)狗,就上網(wǎng)了解了一下,具體原理后期有時(shí)間再分享,今天先簡(jiǎn)單分享一下使用方法。
    的頭像 發(fā)表于 10-26 14:38 ?3316次閱讀
    分享<b class='flag-5'>一下</b>STM32基于CubeMX獨(dú)立看門(mén)狗的<b class='flag-5'>使用方法</b>
    RM新时代网站-首页