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

iPi*_*ate 6 python csv excel spreadsheet xlsm

我有一个*.xlsm文件,里面有20张.我想单独保存几张*.csv(格式化损失很好).已经尝试过xlrd-xlwt和win32com库但无法通过.任何人都可以提供一个代码片段,它在Python中进行上述处理吗?我有其他python依赖项,所以没有其他语言可以工作.谢谢

Ste*_*ima 5

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))
Run Code Online (Sandbox Code Playgroud)

如果您遇到编码问题,请尝试以下代码:

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)
Run Code Online (Sandbox Code Playgroud)