我在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')])
在循环体中。 如何修改它使它工作?在
我有一个类似的类型,我需要为不同的数据多个工作表-我发现最容易的是,首先确保输入的数据是按照我决定工作表的顺序排列的-在你的例子中是日期。然后需要制作工作表,并填写如何知道何时使用不同的工作表。我在工作,所以只是把我曾经用过的东西拿出来,或者想好在你的例子中用什么。希望这对你有帮助。在
相关问题 更多 >
编程相关推荐