如何使用xlsxwriter将数据写入不同的工作表?

2024-03-29 10:34:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在xlsx表中有date属性。这是一份为期一周的报告。 我想按日期分开。结果xlsx文件应该有7张表,每个表的相关信息应该放在那里。在

我用这门课写作:

class DictWriter:
    def __init__(self, workbook, worksheet, fieldnames):
        self.workbook = workbook
        self.worksheet = worksheet
        self.fieldnames = fieldnames
        self.nrow = 1

    def writerow(self, d):
        for k in d:
            ncol = self.fieldnames.index(k)
            self.worksheet.write(self.nrow, ncol, d[k])
        self.nrow += 1

    def writeheader(self):
        for ncol, fieldname in enumerate(self.fieldnames):
            self.worksheet.write(0, ncol, fieldname)

在迭代的开始(我迭代文件中的httpjson结果部分)。仅在创建工作表之前执行一次循环:

^{pr2}$

我应该如何修改现有的逻辑以按日期将所有记录写入工作表?在

就我而言,我是这样做的:

def key_value_gen(k):
    result = date.today() - timedelta(k)
    result = result.strftime('%Y-%m-%d')
    yield result
    yield 1

class DictWriter:
    def __init__(self, workbook, worksheet, fieldnames):
        self.workbook = workbook
        self.worksheet = worksheet
        self.fieldnames = fieldnames
        self.nrows = dict(map(key_value_gen, range(0, 8)))

    def writerow(self, d, condition=0):
        for k in d:
            ncol = self.fieldnames.index(k)
            self.worksheet.write(self.nrows[self.worksheet.name], ncol, d[k])
        print self.worksheet.name
        self.nrows[self.worksheet.name] += 1

    def changeworksheet(self, worksheet):
        self.worksheet = worksheet

    def writeheader(self):
        for ncol, fieldname in enumerate(self.fieldnames):
            self.worksheet.write(0, ncol, fieldname)

但当我投射时,它不能正常工作(创建7张纸,但只在第一张纸中写入):

    for day in range(1,8):
        daydelta = date.today() - timedelta(day)
        daydelta = daydelta.strftime('%Y-%m-%d')
        sheet = workbook.add_worksheet(daydelta)
        sheets[sheet.name] =  worksheet

然后:

writer.changeworksheet(sheets[d['Stat']['date'].encode('utf-8')])

在循环体中。 如何修改它使它工作?在


Tags: nameinselffordatedefresultwrite
1条回答
网友
1楼 · 发布于 2024-03-29 10:34:50

我有一个类似的类型,我需要为不同的数据多个工作表-我发现最容易的是,首先确保输入的数据是按照我决定工作表的顺序排列的-在你的例子中是日期。然后需要制作工作表,并填写如何知道何时使用不同的工作表。我在工作,所以只是把我曾经用过的东西拿出来,或者想好在你的例子中用什么。希望这对你有帮助。在

worksheetNE = workbook.add_worksheet('Northeast Region')
worksheetNW = workbook.add_worksheet('Northwest Region')
worksheetSE = workbook.add_worksheet('Southeast Region')
if region.upper()=='NORTHEAST REGION':
    worksheet=worksheetNE
elif region.upper()=='NORTHWEST REGION':
    worksheet=worksheetNW
elif region.upper()=='SOUTHEAST REGION':
    worksheet=worksheetSE

相关问题 更多 >