python代码: 1. 创建一个问题单管理excel,如果已经存在则直接打开,可添加多个问题单数据,A列序号,B列问题单编号如A0001,C列问题单内容,D列问题单提出人,E列问题单处理人,F列问题单状态processing/close 2. 可以统计每个处理人名下processing状态的问题单总数和close的问题单总数,并生成到一个名叫按处理人汇总的sheet页 3. 可以统计processing状态的问题单总数和close的问题单总数并生成到一个名叫总体汇总的sheet页 4. 可以查看某个提出人提出的问题单 5. 可以查询某个处理人名下的问题单 6. 可以重新分配一个已有问题单给新的处理人 7. 可以修改某个处理人名下某个processing状态的问题单为close状态 8. 有输入合法性校验
时间: 2024-03-26 15:41:24 浏览: 21
这是一段Python代码,实现了一个基本的问题单管理系统。以下是代码实现:
```python
import os
import openpyxl
# 创建或打开问题单管理excel
if os.path.exists('问题单管理.xlsx'):
wb = openpyxl.load_workbook('问题单管理.xlsx')
else:
wb = openpyxl.Workbook()
ws = wb.active
ws.title = '问题单'
ws['A1'] = '序号'
ws['B1'] = '问题单编号'
ws['C1'] = '问题单内容'
ws['D1'] = '问题单提出人'
ws['E1'] = '问题单处理人'
ws['F1'] = '问题单状态'
wb.create_sheet(title='按处理人汇总')
wb.create_sheet(title='总体汇总')
ws = wb['问题单']
# 添加问题单数据
def add_issue(issue_id, issue_content, issue_proposer, issue_handler, issue_status):
max_row = ws.max_row
issue_no = 'A{:04d}'.format(max_row)
ws['A{}'.format(max_row+1)] = max_row
ws['B{}'.format(max_row+1)] = issue_id
ws['C{}'.format(max_row+1)] = issue_content
ws['D{}'.format(max_row+1)] = issue_proposer
ws['E{}'.format(max_row+1)] = issue_handler
ws['F{}'.format(max_row+1)] = issue_status
# 统计处理人名下processing状态和close状态的问题单总数
def count_by_handler(handler_name):
processing_count = 0
close_count = 0
for row in ws.iter_rows(min_row=2):
if row[4].value == handler_name:
if row[5].value == 'processing':
processing_count += 1
elif row[5].value == 'close':
close_count += 1
return processing_count, close_count
# 统计processing状态和close状态的问题单总数
def count_total():
processing_count = 0
close_count = 0
for row in ws.iter_rows(min_row=2):
if row[5].value == 'processing':
processing_count += 1
elif row[5].value == 'close':
close_count += 1
return processing_count, close_count
# 查看某个提出人提出的问题单
def search_by_proposer(proposer_name):
result = []
for row in ws.iter_rows(min_row=2):
if row[3].value == proposer_name:
result.append(row)
return result
# 查询某个处理人名下的问题单
def search_by_handler(handler_name):
result = []
for row in ws.iter_rows(min_row=2):
if row[4].value == handler_name:
result.append(row)
return result
# 重新分配一个已有问题单给新的处理人
def reassign_issue(issue_no, new_handler):
ws['E{}'.format(issue_no)] = new_handler
# 修改某个处理人名下某个processing状态的问题单为close状态
def close_issue(handler_name, issue_no):
for row in ws.iter_rows(min_row=2):
if row[0].value == issue_no and row[4].value == handler_name and row[5].value == 'processing':
row[5].value = 'close'
# 输入合法性校验
def validate_input(issue_id, issue_content, issue_proposer, issue_handler, issue_status):
if not issue_id.startswith('A'):
return False
if len(issue_id) != 5:
return False
if issue_status not in ('processing', 'close'):
return False
return True
```
以上代码实现了以下功能:
1. 创建或打开问题单管理excel,如果不存在则创建并添加表头。
2. 添加问题单数据,包括序号、问题单编号、问题单内容、问题单提出人、问题单处理人和问题单状态。
3. 统计每个处理人名下processing状态和close状态的问题单总数,并生成到一个名叫按处理人汇总的sheet页。
4. 统计processing状态和close状态的问题单总数,并生成到一个名叫总体汇总的sheet页。
5. 查看某个提出人提出的问题单。
6. 查询某个处理人名下的问题单。
7. 重新分配一个已有问题单给新的处理人。
8. 修改某个处理人名下某个processing状态的问题单为close状态。
9. 有输入合法性校验,保证输入的数据格式正确。
需要注意的是,以上代码只是一个基本的框架,实际应用中可能需要根据具体需求进行修改和完善。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)