xlrd在xlsm文件上也应该可以正常工作。我用一个随机的xlsm文件测试了代码,它运行良好。
import csvimport xlrdworkbook = 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 csvimport xlrdworkbook = 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.enpre('utf8')) except: out.append(cell) writer.writerow(out)


