Python:将多个文件从xls转换为csv

时间:2016-09-25 12:04:39

标签: python excel csv

我试图在Python 2.7中编写一个脚本,它将当前目录中的所有.xls和.xlsx文件转换为.csv并保留其原始文件名。

在这里得到其他类似问题的帮助(遗憾的是,不知道是谁可以归功于我借来的代码片段),这是我到目前为止所得到的:

import xlrd
import csv
import os

def csv_from_excel(xlfile):
     wb = xlrd.open_workbook(xlfile)
     sh = wb.sheet_by_index(0)
     your_csv_file = open(os.path.splitext(sxlfile)[0], 'wb')
     wr = csv.writer(your_csv_file, dialect='excel', quoting=csv.QUOTE_ALL)
     for rownum in xrange(sh.nrows):
         wr.writerow(sh.row_values(rownum))
     your_csv_file.close()

 for file in os.listdir(os.getcwd()):
      if file.lower().endswith(('.xls','.xlsx')):
         csv_from_excel(file)

我有两个问题:

1)我无法弄清楚程序运行时的原因,只转换一个文件而不会遍历当前目录中的所有文件。

2)我无法弄清楚如何通过转换保留原始文件名。即输出文件与输入名称相同。

谢谢

1 个答案:

答案 0 :(得分:3)

一种可能的解决方案是使用globpandas

excel_files = glob('*xls*')

 for excel in excel_files:
    out = excel.split('.')[0]+'.csv'
    df = pd.read_excel(excel, 'Sheet1')
    df.to_csv(out)