我認爲這個問題以前已經問過,但還不清楚,在原始問題中,用戶提供了excel.exe,這是一個windows可執行文件擴展名,不適用於mac。如何在MAC上的python中打開Excel實例?
- 我需要在MAC上的Python中打開新的Excel實例。
應該導入哪個模塊?
我是新手我已經完成學習python語言,但無法理解文檔。
我認爲這個問題以前已經問過,但還不清楚,在原始問題中,用戶提供了excel.exe,這是一個windows可執行文件擴展名,不適用於mac。如何在MAC上的python中打開Excel實例?
應該導入哪個模塊?
我是新手我已經完成學習python語言,但無法理解文檔。
如果您需要使用數據「更新」Excel文件,並且假設您需要Excel來完成這項工作,或者您需要更改一些Excel文件以包含新數據,那麼從這些評論中不完全清楚。
通常,在不啓動Excel的情況下「更新」一個Excel文件時,它通常要容易得多,而且速度肯定更快(重要的速度)。但是更新不是正確的詞:你必須閱讀文件並寫出新的文件。您當然可以覆蓋原始文件,因此它看起來像是一個更新。
對於'更新',如果您使用的文件是.xls
文件(Excel 2003),則可以使用三重xlrd
, xlwt
, xlutils
。 IIRC xlwt不支持.xlsx
進行寫入(但xlrd
可以讀取這些文件)。
對於.xlsx
文件我用openpyxl
,
兩者都不夠好寫的東西,如數據,公式和基本格式。
如果您有您與信息「模板」,如果你讀/寫使用上述包之一,然後你必須去與更新Excel中的文件,該文件會迷路利用現有的Excel文件。我必須這樣做,因爲我沒有簡單的方法來包含Visual Basic宏和客戶端指定的非常具體的格式。有時候,它更容易在視覺上設置電子表格,然後以編程方式填充單元格。但是這一切都是在Windows上完成的。
如果你真的必須在Mac上驅動Excel,因爲你需要使用現有的文件作爲模板,我建議你看看Applescript。或者,如果是選項,請查看OpenOffice/LibreOffice PyUno界面。
如果您只需啓動Excel,最好的方法就是使用LaunchServices來執行此操作。
如果你有PyObjC
(該怎麼做,如果你正在使用Python,蘋果預先安裝在10.6及更高版本;否則,您可能必須安裝它):
import Foundation
ws = Foundation.NSWorkspace.sharedWorkspace()
ws.launchApplication_('Microsoft Excel')
如果沒有,你隨時可以使用的工具open
:
import subprocess
subprocess.check_call(['open', '-a', 'Microsoft Excel'])
無論哪種方式,你有效地啓動Excel中相同的方式,如果用戶雙擊Finder中的應用程序圖標。
如果你想讓Excel做一些簡單的事情就像打開一個特定的文檔一樣,這並不困難。看看NSWorkspace
或open
文檔,看看如何做你想做的。
如果您確實想要控制 Excel - 例如,打開文檔,進行一些更改並保存 - 您將要使用其AppleScript界面。
蘋果建議這樣做的方式是通過ScriptingBridge
,或者使用雙語言的方法(寫的AppleScript,並通過NSAppleScript
哪位執行它們,在Python中,您可以通過PyObjC
做)。但是,我可能會使用appscript
(從here獲取代碼)。儘管最初的創作者已經放棄了它,而且只是維護得很少,並且最終可能會停止使用某些未來的OS X版本,但它仍然比官方解決方案好得多。
下面是一個示例(未經測試,因爲我沒有Excel這裏):
import appscript
excel = appscript.app('Microsoft Excel')
excel.workbooks[1].column[2].row[2].formula.set('=A2+1')
從代碼的外觀 導入子進程能夠完成任務。 我需要知道的東西在這裏。正如我剛纔所說,我是新手。 在子給出這個 subprocess.check_call(參數,*,標準輸入=無,標準輸出=無,標準錯誤=無,外殼= FALSE)的文檔 你通過 「開放,-a,Microsoft Excel中」 python如何識別哪些參數屬於哪個?因爲有3個以上,python如何識別命令? 蘋果腳本對我來說看起來是可讀的英文。我想我可能會那樣做。 – Fawad 2013-03-27 18:57:13
我傳遞了一個參數,列表'['open','-a','Microsoft Excel']',它轉到第一個參數'args'。其他參數都獲得它們的默認值。 (請注意,在3.x中,其他參數都是關鍵字,這意味着除非通過名稱傳遞它們,否則不能傳遞超過1個參數。) – abarnert 2013-03-27 20:04:28
至於AppleScript:它非常易於閱讀,但實際上很難來寫。你經常不得不找到一些接近你想要的東西然後修改它的示例代碼,因爲你無法弄清楚如何從頭開始編寫它。好消息是對於像Excel這樣的流行應用程序,那裏有大量的示例代碼。谷歌的「Applescript Excel」 - 或者只是看看這裏的applescript-excel標籤 - 你應該設置。就個人而言,我更喜歡在Python中使用'appscript',因爲這意味着我可以使用列表解析和stldib等所有漂亮的Python東西。 – abarnert 2013-03-27 20:07:48
https://pypi.python.org/pypi/xlrd – lvella 2013-03-27 04:00:11
@Ivella我覺得他是不是打算讀/用xlrd寫,他打算打開一個Excel實例(就像在Windows中調用COM來打開一個Excel窗口) – 2013-03-27 04:01:22
你不能在mac上執行os.startfile(「something.xls」)嗎? – 2013-03-27 04:02:52