Files
integral-shop/outputs/screenshot_process_table/build_process_excel.py

69 lines
2.2 KiB
Python
Raw Normal View History

from openpyxl import Workbook, load_workbook
from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
from openpyxl.utils import get_column_letter
OUTPUT = "outputs/screenshot_process_table/小程序上线流程表.xlsx"
headers = ["阶段", "任务", "产出物", "负责人", "建议时长"]
rows = [
["需求与原型", "需求澄清、功能清单、原型评审", "PRD、原型图", "产品", "2~3天"],
["UI设计", "界面设计、切图标注", "设计稿、切图", "UI", "3~4天"],
["开发", "前端+后端联调、自测", "代码包", "前端/后端", "6~8天"],
["测试与修复", "功能测试、兼容性、回归", "测试报告", "测试", "3~4天"],
["小程序提审", "提交代码、填写审核信息", "审核中", "产品/运营", "1~7天官方不等"],
["发布上线", "审核通过后全量/灰度发布", "线上版本", "产品/运营", "1天"],
]
wb = Workbook()
ws = wb.active
ws.title = "流程表"
ws.append(headers)
for row in rows:
ws.append(row)
header_fill = PatternFill("solid", fgColor="F3F6FA")
grid = Side(style="thin", color="D9DEE7")
border = Border(bottom=grid)
for cell in ws[1]:
cell.font = Font(name="Arial", bold=True, size=12, color="111827")
cell.fill = header_fill
cell.alignment = Alignment(horizontal="left", vertical="center")
cell.border = border
for row in ws.iter_rows(min_row=2, max_row=ws.max_row):
for cell in row:
cell.font = Font(name="Arial", size=11, color="111827")
cell.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True)
cell.border = border
widths = {
"A": 16,
"B": 34,
"C": 22,
"D": 16,
"E": 22,
}
for col, width in widths.items():
ws.column_dimensions[col].width = width
for row_idx in range(1, ws.max_row + 1):
ws.row_dimensions[row_idx].height = 28
ws.freeze_panes = "A2"
ws.auto_filter.ref = f"A1:{get_column_letter(ws.max_column)}{ws.max_row}"
wb.save(OUTPUT)
check = load_workbook(OUTPUT)
sheet = check["流程表"]
assert sheet.max_row == 7
assert sheet.max_column == 5
assert sheet["A2"].value == "需求与原型"
assert sheet["E6"].value == "1~7天官方不等"
print(OUTPUT)