使用openpyxl每月创建一个新工作表

时间:2018-01-09 06:33:23

标签: python openpyxl

嗨我参与纳米比亚的旅游团。我们记录水读数等。每天输入一个Excel文件并计算每个Pax的消耗量,问题不是每个员工都理解Excel。所以我写了一个简单的Python程序,自动将读数输入到excel中。它唯一的问题是我想在每个月保存一张新表并按月分组所有数据(例如1月(所有读数)2月(所有读数))。我可以创建一个新工作表,但我无法将数据输入到新工作表中,它只是覆盖了前几个月的数据......代码如下所示

*import tkinter
from openpyxl import load_workbook
from openpyxl.styles import Font
import time
import datetime
book = load_workbook('sample.xlsx')
#sheet = book.active
Day = datetime.date.today().strftime("%B")
x = book.get_sheet_names()
list= x
if Day in list: # this checks if the sheet exists to stop the creation of multiple sheets with the same name
   sheet =  book.active
else:
    book.create_sheet(Day)
    sheet = book.active

#sheet = book.active*

然后写入我使用的工作表和条目小部件,然后将值保存如下:

Bh1=int(Bh1In.get())
    if Bh1 == '0':
            import Error
    else:
        sheet.cell(row=Day , column =4).value = Bh1
        number_format = 'Number'

也许我是傻瓜,但请帮助!!

2 个答案:

答案 0 :(得分:3)

您依赖于获取活动工作表而不是按名称访问它。只需使用类似的东西:

try:
    sheet = wb[Day]
except KeyError:
    sheet = wb.create_sheet(Day)

可能就是你所需要的。

答案 1 :(得分:0)

尝试

if Day in list: # this checks if the sheet exists to stop the creation of multiple sheets with the same name
   sheet =  book.get_sheet_by_name(Day) 
else:
    book.create_sheet(Day)
    book.save('sample.xlsx')
    sheet = book.get_sheet_by_name(Day)