python代码: 1. 创建一个问题单管理excel,如果已经存在则直接打开,可以添加多个问题单数据,A列序号,B列问题单编号如A0001,C列问题单内容,D列问题单提出人,E列问题单处理人,F列问题单状态processing/close 2. 可以统计每个提出人名下processing状态的问题单总数和close的问题单总数,并生成到一个名叫按提出人汇总的sheet页 3. 可以统计每个处理人名下processing状态的问题单总数和close的问题单总数,并生成到一个名叫按处理人汇总的sheet页 4. 可以统计processing状态的问题单总数和close的问题单总数并生成到一个名叫总体汇总的sheet页 5. 可以查看某个提出人提出的问题单 6. 可以查询某个处理人名下的问题单 7. 可以重新分配一个已有问题单给新的处理人 8. 可以修改某个处理人名下某个processing状态的问题单为close状态 9. 需要有输入合法性校验 10. 需要有测试用例
时间: 2024-03-26 14:41:39 浏览: 150
python生成excel的实例代码
好的,我明白了你的问题。这是一个比较复杂的需求,需要使用Python的Excel操作库来实现。以下是一个初步的代码框架,可以满足你的需求:
```python
import openpyxl
# 打开或创建Excel文件
def open_excel(file_path):
try:
wb = openpyxl.load_workbook(file_path)
except FileNotFoundError:
wb = openpyxl.Workbook()
wb.save(file_path)
return wb
# 添加问题单数据
def add_issue(wb, issue_no, issue_content, reporter, handler):
ws = wb.active
max_row = ws.max_row
new_row = max_row + 1
ws.cell(row=new_row, column=1, value='A{:04d}'.format(new_row))
ws.cell(row=new_row, column=2, value=issue_no)
ws.cell(row=new_row, column=3, value=issue_content)
ws.cell(row=new_row, column=4, value=reporter)
ws.cell(row=new_row, column=5, value=handler)
ws.cell(row=new_row, column=6, value='processing')
# 按提出人汇总
def summarize_by_reporter(wb):
ws = wb.create_sheet('按提出人汇总')
ws.append(['提出人', 'processing状态问题单数量', 'close状态问题单数量'])
# TODO: 统计数据并写入表格
# 按处理人汇总
def summarize_by_handler(wb):
ws = wb.create_sheet('按处理人汇总')
ws.append(['处理人', 'processing状态问题单数量', 'close状态问题单数量'])
# TODO: 统计数据并写入表格
# 总体汇总
def summarize_all(wb):
ws = wb.create_sheet('总体汇总')
ws.append(['processing状态问题单数量', 'close状态问题单数量'])
# TODO: 统计数据并写入表格
# 查看某个提出人的问题单
def view_issues_by_reporter(wb, reporter):
ws = wb.active
for row in ws.iter_rows(min_row=2):
if row[3].value == reporter:
print(row[1].value, row[2].value, row[5].value)
# 查询某个处理人的问题单
def view_issues_by_handler(wb, handler):
ws = wb.active
for row in ws.iter_rows(min_row=2):
if row[5].value == handler:
print(row[1].value, row[2].value, row[6].value)
# 重新分配处理人
def reassign_handler(wb, issue_no, new_handler):
ws = wb.active
for row in ws.iter_rows(min_row=2):
if row[2].value == issue_no:
row[5].value = new_handler
# 修改状态为close
def close_issue(wb, issue_no):
ws = wb.active
for row in ws.iter_rows(min_row=2):
if row[2].value == issue_no and row[6].value == 'processing':
row[6].value = 'close'
# 输入合法性校验
def validate_input(issue_no, issue_content, reporter, handler):
if not issue_no.startswith('A'):
raise ValueError('问题单编号必须以A开头')
if len(issue_content) > 100:
raise ValueError('问题单内容不能超过100个字符')
# 测试用例
def test():
wb = open_excel('问题单管理.xlsx')
add_issue(wb, 'A0001', '这是一个测试问题单', '张三', '李四')
add_issue(wb, 'A0002', '这是另一个测试问题单', '张三', '王五')
add_issue(wb, 'B0001', '这是一个错误的问题单编号', '赵六', '李四')
view_issues_by_reporter(wb, '张三')
view_issues_by_handler(wb, '李四')
reassign_handler(wb, 'A0001', '王五')
close_issue(wb, 'A0002')
summarize_by_reporter(wb)
summarize_by_handler(wb)
summarize_all(wb)
wb.save('问题单管理.xlsx')
if __name__ == '__main__':
test()
```
需要注意的是,这只是一个初步的代码框架,还需要根据实际需求进行修改和完善。同时,需要安装openpyxl库才能运行以上代码。
阅读全文