在Mac上将.xls和.xlsx质量转换为.txt(制表符分隔)

时间:2013-07-22 22:58:34

标签: macos excel ms-office automator

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

您只需要更改以下行:

writer = csv.writer(fileout)

为:

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

以分隔输出文件制表符而不是标准逗号分隔。

目前,此脚本会一次提示您输入文件(允许您从对话框中进行选择),但可以轻松调整以获取给定目录树中的所有Excel文件或名称匹配的位置给定的模式。

如果您首先尝试使用单个文件并让我知道您是如何进行的,我可以帮助您进行更改,以便在您喜欢的情况下自动完成其余文件。

<强>更新

以下是您可以使用的包装脚本:

#!/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脚本的绝对路径或系统上的环境变量。