2012-04-26 58 views
1

我有一個LibreOffice電子表格(data.ods),包含大約500行30列逗號分隔值。第一行包含列標題。通過Python腳本更新以前打開的LibreOffice spreasdsheet而不關閉LibreOffice

Data.ods通過腳本定期全天更新。然後我有幾個鏈接到另一個電子表格中的data.ods中的單元格(main.ods)。

我目前做如下:

1)生成使用Python腳本data.ods。

2)打開data.ods,以便LibreOffice執行逗號分隔值的文本導入以填充行。

3)打開main.ods(自動更新鏈接)。

我無法簡單地將main.ods打開,因爲即使在關閉data.ods後,LibreOffice仍然對文件有某種鎖定,並且不允許我的腳本編輯data.ods,直到我關閉LibreOffice(要求我關閉main.ods)。

我想做以下事情:

1)打開main.ods。

2)通過腳本生成data.ods。

3)使用編輯...鏈接...更新值將更新值導入main.ods。

4)打開main.ods。

5)通過腳本生成新的data.ods。

6)使用編輯...鏈接...更新值將更新後的值導入到main.ods中。

7)根據需要重複。

+0

顯示你有什麼到目前爲止,告訴我們哪裏出了問題。否則,它聽起來像你要求我們爲你寫代碼!這將是愚蠢的。 – kindall 2012-04-26 00:20:52

+0

這個問題對於處理LibreOffice和腳本的人來說非常清楚。這不是要求代碼,而是要知道要走哪條路。 – jsbueno 2012-04-26 02:48:42

回答

0

正如您可能知道的,有些方法可以通過Python腳本處理Open/Libre Offie。它甚至附帶一個自己的Python解釋器。

問題是關於如何做到這一點的文檔非常糟糕 - 但其中一個功能就是擁有一個外部運行的Python腳本來訪問在界面上打開的文檔(如電子表格),並添加值。

它很慢,但它工作正常 - 因爲你只是談論幾百行,速度無關緊要。

現在,讓我嘗試找到該文件,讓你在何處着手的鏈接:如果您在Python交互提示貼在那裏的示例代碼 http://www.openoffice.org/udk/python/python-bridge.html#modes

(需要是Python安裝在LibreOffice上),您將能夠利用Python的dir反思可用的方法和屬性,並找出從腳本編輯單元格內容的方法調用。

+0

謝謝,這對我來說似乎是正確的道路。如果我還有其他問題,我會報告回來。 – quiteausername 2012-04-26 14:33:46

+0

使用文件...如果基礎數據電子表格是CSV,則重新加載是一個簡單的解決方案。 – quiteausername 2012-07-13 18:23:26

+0

Quiteausername的回覆對我來說並不完全清楚。經過研究,我發現這種方法對於這種情況來說是完美的。 http://blog.louic.nl/?p=622 Python的出口到CSV,所述CSV是鏈接到ODS文件的片材,和另一片被標記從鏈接片繪製數據。重新加載需要被觸發,並且有多種簡單的方法可以實現。 – Permafacture 2013-10-06 23:01:26

0

正如jsbueno提到的那樣,您可以在文檔打開時使用uno模塊在文檔上運行Python(並且不會阻止手動編輯文檔)。

同意該文檔目前垃圾。我想在www.documenthacker.com/http://documenthacker.wordpress.com做一些事,但側重於作家。該方案不過是相似的,你可能會發現打開的文檔,文檔瀏覽等實用的方法 - 一旦你進入與Python就變得相當容易的工作下一個問題出來了編程的LibreOffice/OpenOffice的。

在互聯網上有在Java中比在Python通常更多的例子,不幸的是它如何實例之間進行轉換(待辦事項列表,我的文檔上)只有半明顯。好消息是Python方式通常要簡單得多。