2013-07-22 54 views
3

我有大約150個.xls和.xlsx文件需要轉換爲製表符分隔。我嘗試過使用automator,但我只能一個接一個地做。不過,這絕對比單獨打開每一個都要快。我的腳本知識很少,因此我希望儘可能無痛地做到這一點。Mass在Mac上將.xls和.xlsx轉換爲.txt(製表符分隔)

+0

您是否可以使您的Automator工作流程可用,以便我可以看到您擁有的解決方案? – Kaydell

+0

多次使用Automator時,必須使用名爲「運行AppleScript」的Automator操作。 Excel支持AppleEvents,因此用AppleScript(或Python)編寫的腳本可以通過AppleEvents控制Excel。理想情況下,除GUI外,AppleEvents還爲您提供第二個用戶界面。 – Kaydell

+0

獲取指定查找條目 - >打開Excel工作簿 - >保存Excel工作簿(下載http://automatorworld.com/archives/microsoft-office-automator-actions/,不內置) - >關閉Excel工作簿 ------------------------------------- 自定義「保存Excel工作簿」有一個下拉菜單選擇「新建」,「其他」和「新變量」作爲「另存爲」。在它下面,它有一個「格式」下拉菜單,其中包含許多默認Excel轉換工作流程沒有的選項。 –

回答

-2

如果您準備爲此使用Python,我寫了一個將Excel電子表格轉換爲csv文件的腳本。該代碼可在Pastebin獲得。

你只需要更改以下行:

writer = csv.writer(fileout) 

到:

writer = csv.writer(fileout, delimiter="\t") 

作出界定,而不是劃定的標準逗號輸出文件選項卡。

現在這個腳本一次提示您輸入一個文件(允許您從對話框中選擇),但它可以很容易地適用於拾取給定目錄樹中的所有Excel文件或名稱匹配一個給定的模式。

如果您首先嚐試使用單個文件並讓我知道如何繼續,如果您願意,我可以幫助進行更改以使其餘部分自動化。

UPDATE

這裏是一個包裝腳本,你可以使用:

#!/usr/bin/python 

import os, sys, traceback 
sys.path.insert(0,os.getenv('py')) 
import excel_to_csv 

def main(): 
    # drop out if no arg for excel dir 
    if len(sys.argv) < 2: 
     print 'Usage: Python xl_csv_wrapper <path_to_excel_files>' 
     sys.exit(1) 
    else: 
     xl_path = sys.argv[1] 

    xl_files = os.listdir(xl_path) 
    valid_ext = ['.xls', '.xlsx', '.xlsm'] 

    # loop through files in path 
    for f in xl_files: 
     f_name, ext = os.path.splitext(f) 
     if ext.lower() in valid_ext: 
      try: 
       print 'arg1:', os.path.join(xl_path,f) 
       print 'arg2:', os.path.join(xl_path,f_name+'.csv') 
       excel_to_csv.xl_to_csv(os.path.join(xl_path,f), 
             os.path.join(xl_path,f_name+'.csv')) 
      except: 
       print '** Failed to convert file:', f, '**' 
       exc_type, exc_value, exc_traceback = sys.exc_info() 
       lines = traceback.format_exception(exc_type, exc_value, exc_traceback) 
       for line in lines: 
        print '!!', line 
      else: 
       print 'Sucessfully conveted', f, 'to .csv' 


if __name__ == '__main__': 
    main() 

您將需要更換:同向的絕對路徑

sys.path.insert(0,os.getenv('py')) 

在頂部excel_to_csv腳本或您的系統上的環境變量。

+1

有趣的是,我實際上對python有所瞭解。對不起,但你如何運行它?輸出中顯示「〜/ Desktop/done/excel_to_csv.py:9:ImportError:No module named xlrd 」 –

+0

抱歉忘了提及您需要安裝xlrd庫。您可以從這裏獲取源代碼:https://pypi.python.org/pypi/xlrd/0.9.2。我只在Windows/Linux上使用python,但我認爲它在osx上是一樣的 - 你只需要解壓縮包然後運行python setup。PY安裝,一旦你已經下載 – ChrisProsser

+0

關於它的思考,你可能需要須藤添加到命令的前上方安裝的超級用戶。 – ChrisProsser

0

在控制工作簿中使用VBA循環遍歷指定目錄或工作簿列表中的源工作簿,打開每個工作簿,保存轉換後的數據,然後依次關閉每個工作簿。

相關問題