含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 19:31:53 浏览: 143
好的,以下是包含 `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 需求数量等操作。
阅读全文