Исключить лист при преобразовании из Excel в CSV в Python - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть таблица 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')

Я ожидаю, что пустые листы должны быть пропущены.

Я пробовал if worksheet.nrows > 0: до for loop, но он включает и пустые листы.

1 Ответ

2 голосов
/ 04 апреля 2019

Я сделал крошечный файл Excel с 3 листами (лист № 2 пуст) и попробовал следующее:

import xlrd

workbook = xlrd.open_workbook("TestMap.xlsx")
all_worksheets = workbook.sheet_names()

for worksheet_name in all_worksheets:
    worksheet = workbook.sheet_by_name(worksheet_name)
    if worksheet.nrows > 0:
        print(worksheet_name)

Вывод, как я хотел:

>>> sheet1
sheet3

Вы уверены, что ваши листы действительно пусты?

...