在python中从Excel转换为CSV时排除工作表

在python中从Excel转换为CSV时排除工作表,python,excel,csv,worksheet,Python,Excel,Csv,Worksheet,我有一个excel电子表格,其中有多个工作表。我的python代码将工作表转换为单独的CSV。如果有空的工作表,我将尝试排除工作表 这是我的代码: def csv_from_excel(excel_file): workbook = xlrd.open_workbook(excel_file) all_worksheets = workbook.sheet_names() for worksheet_name in all_worksheets: wor

我有一个excel电子表格,其中有多个工作表。我的python代码将工作表转换为单独的CSV。如果有空的工作表,我将尝试排除工作表

这是我的代码:

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)
        with open('{}.csv'.format(worksheet_name), 'wb') as your_csv_file:
            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)])
    print('CSV files has been generated from Excel')

我认为应该跳过空的工作表


我在
for loop
之前尝试了
if worksheet.nrows>0:
,但它也包括空工作表。

我制作了一个包含3张工作表的小Excel文件(第2张工作表为空),并尝试了以下操作:

导入xlrd
工作簿=xlrd.open_工作簿(“TestMap.xlsx”)
所有工作表=工作簿。工作表名称()
对于所有工作表中的工作表\u名称:
工作表=工作簿。工作表名称(工作表名称)
如果工作表.nrows>0:
打印(工作表名称)
输出符合我的要求:

>>> sheet1
sheet3

你确定你的工作表真的是空的吗?

我制作了一个包含3张工作表的小Excel文件(第2张工作表是空的),并尝试了以下操作:

导入xlrd
工作簿=xlrd.open_工作簿(“TestMap.xlsx”)
所有工作表=工作簿。工作表名称()
对于所有工作表中的工作表\u名称:
工作表=工作簿。工作表名称(工作表名称)
如果工作表.nrows>0:
打印(工作表名称)
输出符合我的要求:

>>> sheet1
sheet3

您确定您的工作表真的是空的吗?

尝试将您的解决方案放在WORKEM=WORKEY.sheet\U by\U name(工作表\U name)之后的for循环中的with子句之前。它应该会起作用。您还可以使用if worksheet.ncols>0:来处理pandas.read_excel()和pandas.to_csv()(例如,无循环、工作表名称作为对象的属性等),谢谢@levdev。成功了。你太棒了。试着把你的解决方案放在WORKEM=WORKEY.sheet\U by\U name(工作表\U name)之后,放在with子句前面的for循环中。它应该会起作用。您还可以使用if worksheet.ncols>0:来处理pandas.read_excel()和pandas.to_csv()(例如,无循环、工作表名称作为对象的属性等),谢谢@levdev。成功了。你太棒了。请注意术语。我认为您创建了一个包含3张工作表的工作簿。但你是对的。应该有用,请小心使用术语。我认为您创建了一个包含3张工作表的工作簿。但你是对的。应该行得通