使用 Python 自动化生成工作日历 Excel 表格
在日常工作中,我们经常需要记录和统计每天的工作情况,包括早间工作、下午工作、晚上工作,以及遇到的问题点和是否解决等。手动维护这个工作日历既耗时又容易出错,因此我们可以使用 Python 来自动化这个过程。
功能需求
我们希望实现以下功能:
- 允许用户选择生成工作日历的年份和月份。
- 根据选定的年月,自动生成一个 Excel 表格,第一行包含以下标题:
- 日期
- 早间工作
- 下午工作
- 晚上工作
- 问题点
- 是否解决
- 工作比例
- 从选定年月的第一天开始,每天占一行,直到该月最后一天。
- 如果遇到周末或节假日,使用不同的背景色进行区分。
C:\pythoncode\new\weekreport.py
实现过程
为了实现上述功能,我们使用了 Python 的 wxPython
库来创建一个简单的 GUI 程序,并利用 openpyxl
库来生成和操作 Excel 文件。
首先,我们创建了一个 DateInputDialog
类,用于弹出一个对话框,让用户选择年份和月份:
class DateInputDialog(wx.Dialog):
def __init__(self, parent):
super().__init__(parent, title="选择年月")
self.year = None
self.month = None
# 创建年份和月份选择器
year_choices = [str(i) for i in range(2023, 2026)]
self.year_picker = wx.Choice(self, choices=year_choices)
self.month_picker = wx.Choice(self, choices=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"])
# 创建确认和取消按钮
btn_sizer = wx.BoxSizer(wx.HORIZONTAL)
confirm_btn = wx.Button(self, label="确认")
cancel_btn = wx.Button(self, label="取消")
btn_sizer.Add(confirm_btn, 0, wx.ALL, 5)
btn_sizer.Add(cancel_btn, 0, wx.ALL, 5)
# 创建整体布局
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(wx.StaticText(self, label="选择年份:"), 0, wx.ALL, 5)
sizer.Add(self.year_picker, 0, wx.ALL, 5)
sizer.Add(wx.StaticText(self, label="选择月份:"), 0, wx.ALL, 5)
sizer.Add(self.month_picker, 0, wx.ALL, 5)
sizer.Add(btn_sizer, 0, wx.ALL | wx.ALIGN_CENTER, 5)
self.SetSizer(sizer)
confirm_btn.Bind(wx.EVT_BUTTON, self.on_confirm)
cancel_btn.Bind(wx.EVT_BUTTON, self.on_cancel