含main函数的完整python代码实现: 1. 创建一个需求管理excel,如果已经存在则直接打开,添加多条需求信息,A列需求序号,B列需求内容,C列需求提出人,D列需求状态(open/close),E列需求提出时间,F列需求关闭时间 2. 可根据C列需求提出人和D列需求状态查询excel中的需求 3. 可以修改指定需求提出人且指定的状态为open的需求的状态,同时修改该需求的需求关闭时间为当前时间 4. 可以删除需求提出人为指定人且需求状态为close的需求 5. 可以统计出当前总的open需求的数量

时间: 2023-10-17 11:31:53 浏览: 38
好的,以下是包含 `main` 函数的完整 Python 代码实现: ```python import pandas as pd from datetime import datetime from openpyxl import Workbook, load_workbook def create_or_open_excel(filename): """ 创建或打开 Excel 文件 """ try: wb = load_workbook(filename=filename) ws = wb.active except FileNotFoundError: wb = Workbook() ws = wb.active ws.append(['需求序号', '需求内容', '需求提出人', '需求状态', '需求提出时间', '需求关闭时间']) return wb, ws def add_requirement(ws, requirement): """ 添加需求 """ row = [requirement['序号'], requirement['内容'], requirement['提出人'], requirement['状态'], requirement['提出时间'], requirement['关闭时间']] ws.append(row) def query_requirement(df, proposer=None, status=None): """ 查询需求 """ if proposer is None and status is None: return df elif proposer is not None and status is None: return df[df['需求提出人'] == proposer] elif proposer is None and status is not None: return df[df['需求状态'] == status] else: return df[(df['需求提出人'] == proposer) & (df['需求状态'] == status)] def modify_requirement(ws, proposer): """ 修改需求 """ for row in ws.iter_rows(min_row=2): if row[2].value == proposer and row[3].value == 'open': row[3].value = 'close' row[5].value = datetime.now().strftime('%Y-%m-%d %H:%M:%S') wb.save('需求管理.xlsx') def delete_requirement(df, proposer): """ 删除需求 """ df = df[(df['需求提出人'] != proposer) | (df['需求状态'] != 'close')] df.to_excel('需求管理.xlsx', index=False) def count_open_requirements(df): """ 统计 open 需求数量 """ return len(df[df['需求状态'] == 'open']) def main(): filename = '需求管理.xlsx' wb, ws = create_or_open_excel(filename) # 添加多条需求信息 requirements = [ {'序号': 1, '内容': '需求1', '提出人': '小明', '状态': 'open', '提出时间': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '关闭时间': ''}, {'序号': 2, '内容': '需求2', '提出人': '小红', '状态': 'close', '提出时间': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '关闭时间': datetime.now().strftime('%Y-%m-%d %H:%M:%S')} ] for requirement in requirements: add_requirement(ws, requirement) wb.save(filename) # 查询需求 df = pd.read_excel(filename) print(query_requirement(df, proposer='小明', status='open')) # 修改需求 modify_requirement(ws, proposer='小明') # 删除需求 df = pd.read_excel(filename) delete_requirement(df, proposer='小红') # 统计 open 需求数量 df = pd.read_excel(filename) print(count_open_requirements(df)) if __name__ == '__main__': main() ``` 以上代码中,`create_or_open_excel` 函数用于创建或打开 Excel 文件,`add_requirement` 函数用于添加需求,`query_requirement` 函数用于查询需求,`modify_requirement` 函数用于修改需求,`delete_requirement` 函数用于删除需求,`count_open_requirements` 函数用于统计 open 需求数量。其中,`main` 函数是程序的入口,包含了添加需求、查询需求、修改需求、删除需求和统计 open 需求数量等操作。

相关推荐

最新推荐

recommend-type

Python如何在main中调用函数内的函数方式

主要介绍了Python如何在main中调用函数内的函数方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

JSONException:com.alibaba.fastjson.JSONException: expect ‘:’ at 0, actual = 已解决

检查你代码的 JSONEObject.fromObject(result) 代码位置,参数result不符合Json的定义格式,所以无法转换成Json格式,导致报出上述错误。 解决办法: 好好检查下你的result参数,按照Json规范定义。 如果一定要输出...
recommend-type

python2练习题——编写函数,输入数字,判断是否是素数

一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。 性质 质数具有许多独特的性质: (1)质数p的约数只有两个:1和p。 (2)初等数学基本定理:任一大于1的自然数,要么本身是...
recommend-type

Android studio 运行main 函数的方法

主要介绍了Android studio 运行main 函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Python中if __name__ == '__main__'作用解析

主要介绍了Python中if __name__ == '__main__'作用解析,这断代码在Python中非常常见,它有作用?本文就解析了它的作用,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。