以下代码按预期工作。它将excel表保存到不同的csv文件中,每个文件名为sheetname.csv。我尝试的唯一更改是将文件名添加到csv文件中。像data.xls.sheetname.csv
之类的东西# -*- coding: utf-8 -*-
import xlrd
import csv
from os import sys
def csv_from_excel(excel_file):
workbook = xlrd.open_workbook(excel_file)
all_worksheets = workbook.sheet_names()
for worksheet_name in all_worksheets:
worksheet = workbook.sheet_by_name(worksheet_name)
your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
for rownum in xrange(worksheet.nrows):
wr.writerow([unicode(entry).encode("utf-8") for entry in worksheet.row_values(rownum)])
your_csv_file.close()
if __name__ == "__main__":
csv_from_excel(sys.argv[1])
以下更改无法按预期工作:
your_csv_file = open(''.join([excel_file,worksheet_name,'.csv']), 'wb')
以下内容也不起作用:
your_csv_file = open(''.join([worksheet_name,'.csv']).join([excel_file]), 'wb')
答案 0 :(得分:3)
由于您需要在所有名称之间使用句点,因此请使用.
作为加入者:
'.'join([excel_file, worksheet_name, 'csv'])
您目前得到的是data.xlssheetname.csv,这不是您所期望的。
答案 1 :(得分:1)
您可以尝试:
your_csv_file = open(excel_file+''.join([worksheet_name,'.csv']), 'wb')
答案 2 :(得分:1)
您可以使用简单的格式声明:
your_csv_filename = "{}.{}.{}".format(excel_file, worksheet_name, "cvs")
your_csv_file = open(your_csv_filename, 'wb')