python 操作 libreoffice spreadsheet__python

來源:互聯網
上載者:User

最近研究了一個,用python來向libreoffice spreadsheet中的寫資料,openoffice管方網站的資料也不是很清楚,

在網上找到的幾個比較有用的網站有:http://wiki.services.openoffice.org/wiki/Python#PyUNO_Modules

上面了有一個比較好的入門文檔:http://lucasmanual.com/mywiki/OpenOffice

還有一個人在論壇上寫的一個比較有用的例子:http://www.oooforum.org/forum/viewtopic.phtml?p=56037#56037

這個例子非常好,告訴你怎樣操作spreadsheet,本人在其它地方沒有找到操作spreadsheet的文檔,如果哪位網友找到了,留個言,謝謝。

現在把基本的代碼貼過來,其它的請查上面給出的那兩個網址即可


首先要啟動libreoffice用下面命令:
libreoffice -accept="socket,host=localhost,port=2002;urp;"

Start openoffice so it listens on a port.

串連:

import uno

def connect():
    local = uno.getComponentContext()
    resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
    context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
    desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
   
    return desktop

class Calc:

    def __init__(self, file_name = "private:factory/swriter"):
        desktop = connect()
        self.doc = desktop.loadComponentFromURL(file_name, "_blank", 0, ())
        self.sheet = self.doc.getSheets().getByIndex(0)

    def get_dic(self, start, end):
       
        for row in range(start - 1, end):
            value = self.sheet.getCellByPosition(0, row).getString()

            self.sheet.getCellByPosition(1, row).setString("have read")

    def save(self):

        self.doc.store()

 

def main():
    calc_file = "file:///home/zhangliyong/Desktop/2011.xls"

    calc_obj = Calc(calc_file)
    calc_obj.get_dic(5, 46)
    calc_obj.save()

注意在操作libreoffice文檔時,當指寫文檔路徑時前面要加file://

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.