代码之家  ›  专栏  ›  技术社区  ›  Lappies Laubscher

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

  •  1
  • Lappies Laubscher  · 技术社区  · 6 年前

    嗨,我参与了纳米比亚的旅游住宿。我们记录水的读数等。每天输入Excel文件并计算每个人的消费量,问题是不是每个员工都懂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 回复  |  直到 6 年前
        1
  •  3
  •   Charlie Clark    6 年前

    您需要获取活动工作表,而不是按名称访问它。只需使用以下内容:

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

    可能就是你所需要的。

        2
  •  0
  •   Rakesh    6 年前

    尝试

    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)