总是忘记每天填写工作日志,记录当天工作内容。学习了Python后,我用简单的基础代码编制了一个小程序。
个人认为学习编程,就需要不断的寻找项目,没有项目创造项目,这样才能不断地丰富自己的编程技术。
修正一个Bug,如果bat文件放在启动文件夹中,生成的文件会创建者c:\windows路径下。
解决办法:将bat文件放在日志存放的目录下,生成快捷方式放在启动文件夹下。
本小程序实现效果:
1、开机自动启动。
2、输入日期、工作内容、工作时间、是否加班等信息。
3、自动生成excel表格
程序编写过程:
本程序由三个文件组成
1、主文件 work_log.py
输入日志内容,检查是否输错,调用t.py。
day = input('请输入记录日志日期(例如20240808):')
work = input('请输入当前日期工作内容:')
times_range = input('请输入工作时长:')
if_overtime = input('请输入是否加班:')
jiancha = input('输入正确请按y,否则请按n:')
while jiancha =='n':
day = input('请输入记录日志日期:')
work = input('请输入当前日期工作内容:')
times_range = input('请输入工作时长:')
if_overtime = input('请输入是否加班:')
jiancha = input('输入正确请按y,否则请按n:')
import t
t.t_1(day,work,times_range,if_overtime)
2、副文件 t.py
根据主文件输入的日期,判断是星期几,并生成weekday属性。
def t_1(day,work,times_range,if_overtime):
from datetime import datetime
def get_weekday():
# print(day)
date = datetime.strptime(day, "%Y%m%d")
weekday = date.weekday()
return weekday
weekday = get_weekday()
if weekday == 0:
weekday = '星期一'
elif weekday == 1:
weekday = '星期二'
elif weekday == 2:
weekday ='星期三'
elif weekday == 3:
weekday = '星期四'
elif weekday == 4:
weekday ='星期五'
elif weekday == 5:
weekday ='星期六'
else:
weekday = '星期日'
data = {
f'{day[4:6]}月份':[day,times_range,work,weekday,if_overtime]
}
demo = Demo()
demo.SaveExcels(data,'驻场工作日志','驻场日志',('日期','时长','工作内容','星期','是否加班'))
3、ExcelDemo excel模版程序
借用别人编写的,生成excel文件
'''
通过调用这个文件中的方法,可以直接操作excel
'''
import os, xlwt, xlrd
from xlutils.copy import copy
class Demo:
# 单表数据存储
@staticmethod
def SaveExcel(data, folder, sheet, sheet1_headers):
'''
:param data: 字典:{子表名:[数据值]}
:param folder: 文件夹路径
:param sheet: excel文件名(工作簿)
:param sheet1_headers: 表头 元组类型
:return:
'''
# 获取当前路径
os_mkdir_path = os.getcwd() + f'/{folder}/'
# 判断这个路径是否存在,不存在就创建
if not os.path.exists(os_mkdir_path):
os.mkdir(os_mkdir_path) # 创建一个名为数据的文件夹
# 判断excel表格是否存在 工作簿文件名称
os_excel_path = os_mkdir_path + f'{sheet}.xls'
if not os.path.exists(os_excel_path):
# 不存在,创建工作簿(也就是创建excel表格)
workbook = xlwt.Workbook(encoding='utf-8')
"""工作簿中创建新的sheet表""" # 设置表名
for i in data.keys():
key = i
worksheet1 = workbook.add_sheet(key, cell_overwrite_ok=True) # data 是要创建的表名
# 这个表名必须要和data字典中的key一致
"""设置sheet表的表头"""
# sheet1_headers = ('评论内容', '评论时间', '点赞数量', '用户名')
# 将表头写入工作簿
for header_num in range(0, len(sheet1_headers)):
# 设置表格长度
worksheet1.col(header_num).width = 2560 * 3
# 写入 行, 列, 内容
worksheet1.write(0, header_num, sheet1_headers[header_num])
# 循环结束,代表表头写入完成,保存工作簿
workbook.save(os_excel_path)
# 判断工作簿是否存在
if os.path.exists(os_excel_path):
# 打开工作簿
workbook = xlrd.open_workbook(os_excel_path)
# 获取工作薄中所有表的个数
sheets = workbook.sheet_names()
for i in range(len(sheets)):
for name in data.keys():
worksheet = workbook.sheet_by_name(sheets[i])
# 获取工作薄中所有表中的表名与数据名对比
if worksheet.name == name:
# 获取表中已存在的行数
rows_old = worksheet.nrows
# 将xlrd对象拷贝转化为xlwt对象
new_workbook = copy(workbook)
# 获取转化后的工作薄中的第i张表
new_worksheet = new_workbook.get_sheet(i)
for num in range(0, len(data[name])):
new_worksheet.write(rows_old, num, data[name][num])
new_workbook.save(os_excel_path)
# 多表数据存储
@staticmethod
def SaveExcels(data, folder, sheet, sheet1_headers):
'''
:param data: 字典{sheet名:[数据值]}
:param folder: 文件夹名字
:param sheet: excel文件名(工作簿)
:param sheet1_headers: 表头 元组类型
:return:
'''
# 获取表的名称
sheet_name = [i for i in data.keys()][0]
# 创建保存excel表格的文件夹
# os.getcwd() 获取当前文件路径
os_mkdir_path = os.getcwd() + f'/{folder}/'
# 判断这个路径是否存在,不存在就创建
if not os.path.exists(os_mkdir_path):
os.mkdir(os_mkdir_path)
# 判断excel表格是否存在 工作簿文件名称
os_excel_path = os_mkdir_path + f'{sheet}.xls'
if not os.path.exists(os_excel_path):
# 不存在,创建工作簿(也就是创建excel表格)
workbook = xlwt.Workbook(encoding='utf-8')
"""工作簿中创建新的sheet表""" # 设置表名
worksheet1 = workbook.add_sheet(sheet_name, cell_overwrite_ok=True)
"""设置sheet表的表头"""
# sheet1_headers = ('评论内容', '评论时间', '点赞数', '用户名')
# 将表头写入工作簿
for header_num in range(0, len(sheet1_headers)):
# 设置表格长度
worksheet1.col(header_num).width = 2560 * 3
# 写入表头 行, 列, 内容
worksheet1.write(0, header_num, sheet1_headers[header_num])
# 循环结束,代表表头写入完成,保存工作簿
workbook.save(os_excel_path)
"""=============================已有工作簿添加新表==============================================="""
# 打开工作薄
workbook = xlrd.open_workbook(os_excel_path)
# 获取工作薄中所有表的名称
sheets_list = workbook.sheet_names()
# 如果表名称:字典的key值不在工作簿的表名列表中
if sheet_name not in sheets_list:
# 复制先有工作簿对象
work = copy(workbook)
# 通过复制过来的工作簿对象,创建新表 -- 保留原有表结构
sh = work.add_sheet(sheet_name)
# 给新表设置表头
# excel_headers_tuple = ('日期', '姓名', '年龄', '性别', '电话号码')
for head_num in range(0, len(sheet1_headers)):
sh.col(head_num).width = 2560 * 3
# 行,列, 内容, 样式
sh.write(0, head_num, sheet1_headers[head_num])
work.save(os_excel_path)
"""========================================================================================="""
# 判断工作簿是否存在
if os.path.exists(os_excel_path):
# 打开工作簿
workbook = xlrd.open_workbook(os_excel_path)
# 获取工作薄中所有表的个数
sheets = workbook.sheet_names()
for i in range(len(sheets)):
for name in data.keys():
worksheet = workbook.sheet_by_name(sheets[i])
# 获取工作薄中所有表中的表名与数据名对比
if worksheet.name == name:
# 获取表中已存在的行数
rows_old = worksheet.nrows
# 将xlrd对象拷贝转化为xlwt对象
new_workbook = copy(workbook)
# 获取转化后的工作薄中的第i张表
new_worksheet = new_workbook.get_sheet(i)
for num in range(0, len(data[name])):
new_worksheet.write(rows_old, num, data[name][num])
new_workbook.save(os_excel_path)
# 创建类型对象.方法
# Demo().SaveExcel()
# data = {
# 'data111': [1, 2, 4, 5]
# }
# # 类名.方法
# Demo.SaveExcel(data,'数据文件夹','爬虫数据',('a','b','c','d'))
开机自启动
1、创建一个txt文件,将扩展名变为bat。记得写好路径。
python d:\myproject\work_log\work_log.py
2、将该程序快捷方式放在启动文件夹中
按 Windows 徽标键+ R,键入“shell:startup”,然后选择“确定”。 这将打开“启动”文件夹。