最近我一直致力于我的小项目,即为我自动生成工时电子表格。它只适用于我,但是当我想生成多个工作表(后来以工作表作为表格)和/或生成多个电子表格时它会覆盖旧的工作表。
使用openpyxl lib打开,编辑和生成电子表格。
我尝试过移动保存部分并在循环之外生成部分等等,但这些都没有帮助我。
问题是如何防止循环覆盖文件而不是生成新文件呢?
这是以下软件的主要部分。
cols = [2, 3, 4, 12]
row = 9
hrs = 0
nhrs = 0
for worker in workers:
sheet.title = ('{} {}'.format(worker.name, worker.surename))
for day, hday in itertools.zip_longest(days, holidays):
if day.weekday() <= 4 and day not in holydays:
sheet.cell(row=row, column=cols[0]).value = '08:00'
sheet.cell(row=row, column=cols[1]).value = '16:00'
sheet.cell(row=row, column=cols[2]).value = '8 h'
hrs += 8
row += 1
elif day.weekday() > 4 and day not in holidays:
sheet.cell(column=cols[0], row=row).value = ''
row += 1
elif day in holidays:
sheet.cell(column=cols[3], row=row).value = '8 h'
nhrs += 8
row += 1
sheet.cell(column=cols[2], row=40).value = str(hrs) + ' h'
sheet.cell(column=cols[3], row=40).value = str(nhrs) + ' h'
workbook.save('SPREADSHEET_{}.xlsx'.format(native_month))
print('Done')
提前致谢!
从评论中编辑:
# native_month for the workbook name is provided by this function applied to a 1-12
def month_name_native(month):
months = ["Unknown", "Januar", "Februar", "Mart", "April", "Maj", "Jun",
"Jul", "August", "Septembar", "Oktobar", "Decembar" ]
return months[month].upper()
答案 0 :(得分:0)
如果我理解正确,您希望每个工作人员都有一个新的电子表格,对吗?
您目前正在做的是一遍又一遍地使用相同的工作表对象,因此它会被覆盖。您必须在for循环中为每个worker创建一个新工作表。这应该做:
# PSEUDO CODE
fastcgi_param HTTP_REFERER replace(localhost:9000, domaina.com, HTTP_REFERER)