Python xlsxwriter模块:在多个工作表上迭代相同的一组格式和条件

使用xlsxwriter模块,我创build了一个将csv文件内容复制到excel工作表的Python脚本。 第二个工作表然后将被创build查找,计算,条件格式 – 一个基于第一个工作表的模板。 没问题。

当我尝试循环代码时,我的问题就开始了,即将3个csv文件内容复制到1个工作簿中的3个工作表中,然后再创build另外3个应用相同模板但是基于不同工作表查找的工作表。 这是“复制csv到excel工作表”代码的一个片段:

workbook = Workbook(csvFile[:-4] + '.xlsx', {'strings_to_numbers': True}) align = workbook.add_format({'align':'center','text_wrap':True}) for csvfile in (glob.glob(filepath + '\\*.csv')): worksheet = workbook.add_worksheet(header[2]) with open(csvfile, 'rb') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet.set_column('A:A',65) worksheet.set_column('B:P',12) worksheet.write(r, c, col, align) 

我想要做这样的事情:

 workbook = Workbook(csvFile[:-4] + '.xlsx', {'strings_to_numbers': True}) align = workbook.add_format({'align':'center','text_wrap':True}) for i, csvfile in (glob.glob(filepath + '\\*.csv')): worksheet[i] = workbook.add_worksheet(header[i]) with open(csvfile, 'rb') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet[i].set_column('A:A',65) worksheet[i].set_column('B:P',12) worksheet[i].write(r, c, col, align) 

xlsxwriter模块不允许我这样做。 上面的代码会抛出以下错误:

 File "C:\workspace\automagic.py", line 103, in create_xls worksheet[i] = workbook.add_worksheet(header[i]) NameError: global name 'worksheet' is not defined 

我不想复制粘贴相同的代码,只是改变了工作表名称。

更新:考虑到jmcnamara的评论,我能够修改我的代码,如下所示:

 worksheet = ['worksheet0','worksheet1','worksheet2'] workbook = Workbook(csvFile[:-4] + '.xlsx', {'strings_to_numbers': True}) align = workbook.add_format({'align':'center','text_wrap':True}) for i, csvfile in enumerate(glob.glob(filepath + '\\*.csv')): testtype = csvfile.split('.')[3].split('_')[1] worksheet[i] = workbook.add_worksheet(testtype) with open(csvfile, 'rb') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet[i].set_column('A:A',65) worksheet[i].set_column('B:P',12) worksheet[i].write(r, c, col, align) 

xlsxwriter模块不允许我这样做。 上面的代码会抛出以下错误

这不是一个XlsxWriter错误,它是一个普通的Python错误。 你从下面得到相同的错误:

 $ cat error_test.py def some_func(): i = 1 worksheet[i] = 123 some_func() $ python error_test.py Traceback (most recent call last): File "error_test.py", line 7, in <module> some_func() File "error_test.py", line 5, in some_func worksheet[i] = 123 NameError: global name 'worksheet' is not defined 

您需要在某处声明variablesworksheet ,并可能使用worksheet.append()