Как извлечь лист из *.xlsm и сохранить его как *.csv в Python?

У меня есть *.файл xlsm, который имеет 20 листов в нем. Я хочу сохранить несколько листов как *.csv (потеря форматирования в порядке) индивидуально. Уже пробовал библиотеки xlrd-xlwt и win32com, но не смог пройти. Может ли кто-нибудь предоставить фрагмент кода, который выполняет вышеуказанную обработку в Python? У меня есть другие зависимости python, поэтому никакой другой язык не будет работать. Спасибо

1 ответов


xlrd должен отлично работать и с файлами xlsm. Я протестировал код со случайным файлом xlsm, и он работал отлично.

import csv
import xlrd

workbook = xlrd.open_workbook('test.xlsx')
for sheet in workbook.sheets():
    with open('{}.csv'.format(sheet.name), 'wb') as f:
        writer = csv.writer(f)
        writer.writerows(sheet.row_values(row) for row in range(sheet.nrows))

Если у вас проблемы с кодировкой, попробуйте код ниже:

import csv
import xlrd

workbook = xlrd.open_workbook('test.xlsm')
for sheet in workbook.sheets():
    if sheet.name == "Sheet_name_from_xlsm_file":
        with open('{}.csv'.format(sheet.name), 'wb') as f:
            writer = csv.writer(f)
            for row in range(sheet.nrows):
                out = []
                for cell in sheet.row_values(row):
                    try:
                        out.append(cell.encode('utf8'))
                    except:
                        out.append(cell)
                writer.writerow(out)