2013-08-20 69 views
0

我有一個非常複雜的電子表格工作簿 - 30張紙,每張紙都有多個表格,大量公式和大約8MB的文件大小。我想改變一張紙上的幾個單元格的值,然後得到另一張紙上的單元格的結果值。Python:以編程方式執行現有電子表格的公式計算

我搜索了一個方法來設置一個單元格的值並獲取另一個單元格的值。例如,讓我使用僅有一頁,一列和兩行的超級簡單工作簿。

Row1, Column1 (A1): 3  <--- This is a variable that will be supplied by a program. 
Row2, Column1 (A2): =A1*2 <--- This is a cell from which I would like to get a calculated value with any value supplied to the A1 cell. 

我能夠使用xlrd打開一個工作簿並從A2單元獲取初始值。但似乎xlrd沒有讓我更改單元格值的方法,因此我無法更改A1值。

我遵循writing to existing workbook using xlwt鏈接提供的說明,但xlutils.copy函數不復制公式。因此,當我向A1單元格提供新值時,A1單元格更新爲新值,但未對A2單元格進行計算。

我把它搜索了兩天,沒有運氣。請幫忙。

如果在python中沒有這個方法,其他工具中的任何建議也將不勝感激。我首選的操作系統環境是Ubuntu。

謝謝。

+0

它有沒有做這種方式?你可以用另一個圖書館['pandas'](http://pandas.pydata.org)來做你需要的東西,然後把它寫到一個Excel文件中('pandas'支持)? –

回答

0

您可能會嘗試訪問您的首選電子表格工具的API並使用它來操作單元格並執行計算。既然你使用的是Ubuntu,我猜你可能有LibreOffice/OpenOffice。如果是這樣,LibreOffice API允許您操作電子表格單元格並調用LibreOffice Calc的功能 - 例如解析輸入到單元格中的公式語法並計算結果。 API可以通過PyUNO模塊從Python進行訪問。

這裏有一些鏈接,描述了使用的LibreOffice/OpenOffice的通過Python:

http://wiki.openoffice.org/wiki/Python

http://www.openoffice.org/udk/python/python-bridge.html

http://api.libreoffice.org/examples/examples.html#python_examples

+0

通過嘗試以下三個鏈接解決了問題...感謝skewart的回答。它幫助我研究PyUno。 - 啓動,停止和連接到OpenOffice與Python http://www.linuxjournal.com/content/starting-stopping-and-connecting-openoffice-python - 電子表格轉換爲CSV文件使用Python和pyuno http://www.linuxjournal.com/content/convert-spreadsheets-csv-files-python-and-pyuno-part-1v2 - 計算器例子 http://www.oooforum.org/forum/ viewtopic.phtml?p = 56037#56037 –

0

我知道你說你的首選環境是Ubuntu,所以我很抱歉,這是一個Excel相關的解決方案,但它可能會幫助你解決你的困境。

我很熟悉一個方便的excel插件,名爲Data Nitro - 我知道它專門將python與電子表格格式,Excel相結合。

他們有一個溫和的文檔,希望你會發現這個庫更好地支持讀/寫電子表格。

他們提供了一些sample python scripts,這可能會讓您更好地瞭解Data Nitro作爲解決問題的適用性。

+0

我快速瀏覽了Data Nitro樣本。它不使用嵌入到現有電子表格中的公式。感謝您盡力幫助我。 –

相關問題