我有大约150个.xls和.xlsx文件,我需要转换为制表符分隔。我尝试使用automator,但我只能一个接一个地做。不过,它肯定比单独打开每个单独的更快。我的脚本知识很少,所以我希望尽可能轻松地做到这一点。
答案 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脚本的绝对路径或系统上的环境变量。