批量转换.xls和.xlsx到.txt(制表符分隔)在Mac上

我有大约150 .xls和.xlsx文件,我需要转换成制表符分隔。 我试过使用automator,但我只能一个接一个的做。 不过,这肯定比单独打开每一个都要快。 我有很less的脚本知识,所以我希望尽可能无痛地做到这一点。

如果您准备为此使用Python,我已经编写了一个将Excel电子表格转换为csv文件的脚本。 代码在Pastebin中可用。

您只需要更改以下行:

writer = csv.writer(fileout) 

至:

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

使输出文件选项卡分隔而不是标准的逗号分隔。

现在,这个脚本会一次提示您input一个文件(允许您从对话框中select),但是它可以很容易地适用于拾取给定目录树中的所有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() 

您将需要replace:

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

顶部有绝对path的excel_to_csv脚本或您的系统上的环境variables。

在控制工作簿中使用VBA循环遍历指定目录或工作簿列表中的源工作簿,打开每个工作簿,保存转换的数据,然后依次closures每个工作簿。