2015-11-30 59 views
0

我可以在单个Excel表格中将xlsx转换为csv。
我怎样才能在单个Excel文件中的多个工作表的情况下做同样的事情?
我曾尝试:
如何使用python将多个xlsx表格转换为csv

workBook = xlrd.open_workbook(filePath) 
sheet_names = workBook.sheet_names() 
lenth = len(sheet_names) 
for i in range(0,lenth): 
    sheet = workBook.sheet_by_name(sheet_names[i]) 
    yourcsvFile = open(csvPath, 'wb') 
    wr = csv.writer(yourcsvFile, quoting=csv.QUOTE_ALL) 
    for rownum in xrange(sheet.nrows): 
     wr.writerow(sheet.row_values(rownum)) 
yourcsvFile.close() 
+0

什么是你所得到的输出?你想要每张纸都保存到一个单独的CSV文件? – Simon

回答

0

试试这个

import sys 
import xlrd 
import csv 
filePath = sys.argv[1] # user input file 
csvPath = sys.argv[2] 
workBook = xlrd.open_workbook(filePath) 
sheet_names = workBook.sheet_names() 
list_sheet = [] 
lenth = len(sheet_names) 
for i in range(0,lenth): 
    sheet = workBook.sheet_by_name(sheet_names[i]) 
    list_sheet.append(sheet) 
yourcsvFile = open(csvPath, 'wb') 
wr = csv.writer(yourcsvFile, quoting=csv.QUOTE_ALL) 
total_row = list_sheet[0].ncols 
for k in xrange(0,1): 
    for rownum in xrange(list_sheet[k].nrows): 
     wr.writerow(list_sheet[k].row_values(rownum)) 
if len(sheet_names) > 1: 
    for k in xrange(1,len(list_sheet)): 
     if list_sheet[k].ncols != total_row: 
     continue 
    for rownum in xrange(1,list_sheet[k].nrows): 
     wr.writerow(list_sheet[k].row_values(rownum)) 

yourcsvFile.close()