在工作表之间切换

时间:2015-08-20 12:46:33

标签: python excel xlsx xlsxwriter

我尝试从xlsx创建csv文件。此csv中的每一行都包含属性' ATR'。许多行可以具有相同的属性' ATR'例如' x'' y'等。

所以我想要做的是逐个转换csv文件行并将它们写入这个xlsx文件。如果没有名称作为属性值ATR'的工作表,请创建它并在那里写下该行。它已经存在此工作表,将该行写入此工作表。

def temp_file_to_xlsx():
    wb = xlsxwriter.Workbook('export.xlsx')

    with open('export/export.csv') as f:
        r=-1
        for row in f:
            r+=1
            data = {}
            splitted_row = row.split('::')
            for column in splitted_row:
                splitted_column = column.split('.:.')
                data[splitted_column[0]]=splitted_column[1]

            ws = wb.add_worksheet(data['ATR']) # IT SAYS THAT THERE IS ALREADY WORKSHEET WITH THIS NAME SO I WANT TO WRITE IT THERE
            attributes = data.keys()
            for c in xrange(len(attributes)):
                try:
                    ws.write(c,r,data[attributes[c]])
                except:
                    ws.write(c,r,'-')
        wb.close()

是否有可能,如果可以,怎么样?

1 个答案:

答案 0 :(得分:2)

您需要记下您创建的所有工作表并重新使用它们。 例如,在函数的开头,创建一个字典:

sheets = {}

然后更换一行:

ws = wb.add_worksheet(data['ATR'])

通过

if not sheets.has_key(data['ATR']):
    sheets[data['ATR']] = wb.add_worksheet(data['ATR'])
ws = sheets[data['ATR']]

因此保留所有先前创建的工作表并重复使用它们。