如何从* .xlsm中提取工作表并将其另存为Python中的* .csv?


问题内容

我有一个 .xlsm文件,其中有20张纸。我想将几张纸单独保存为 .csv(格式丢失是可以的)。已经尝试过xlrd-
xlwt和win32com库,但无法通过。谁能提供一个使用Python进行上述处理的代码段?我还有其他python依赖项,因此没有其他语言可以使用。谢谢


问题答案:

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)