# -*- coding: utf-8 -*-
"""
B25_生成示例文件_zh.py
B25_GenerateSample_zh.py

配套教程：B25《用 Python + openpyxl 批量处理 Excel》
用途   ：自动创建一个测试用的 Excel 文件（销售业绩表_原始.xlsx），
         让你跟着 README 立刻就能跑后续的批量处理脚本，不用自己造数据。

依赖   ：openpyxl>=3.0
运行   ：
    python 生成示例文件_zh.py
    （或 py -3 生成示例文件_zh.py / python3 生成示例文件_zh.py）
"""
from __future__ import annotations

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.utils import get_column_letter


# ---------- 1. 数据（与 数据源_sample.csv 保持一致；实际项目可以从 CSV 读）----------
HEADERS = ["部门", "负责人", "Q1销售额", "Q2销售额", "Q3销售额",
           "Q4销售额", "年度目标", "完成率"]

ROWS = [
    ["销售一部", "张伟", 520000, 580000, 610000, 720000, 2400000, 0.97],
    ["销售二部", "李娜", 480000, 520000, 490000, 610000, 2000000, 1.05],
    ["销售三部", "王强", 310000, 290000, 340000, 380000, 1200000, 1.10],
    ["销售四部", "赵敏", 260000, 310000, 320000, 400000, 1200000, 1.08],
    ["销售五部", "钱涛", 180000, 220000, 260000, 310000, 1000000, 0.97],
    ["销售六部", "孙丽", 150000, 180000, 210000, 240000,  800000, 0.97],
]

# ---------- 2. 创建一个"原始"的 Excel ----------
wb = Workbook()
ws = wb.active
ws.title = "原始数据"

# 写表头 + 数据
ws.append(HEADERS)
for row in ROWS:
    ws.append(row)

# ---------- 3. 给表头加点样式（演示样式 API，不是必须）----------
header_font = Font(bold=True, color="FFFFFF")
header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid")
for col_idx in range(1, len(HEADERS) + 1):
    cell = ws.cell(row=1, column=col_idx)
    cell.font = header_font
    cell.fill = header_fill
    cell.alignment = Alignment(horizontal="center", vertical="center")

# 让列宽自适应（粗略按字符数估算）
for col_idx in range(1, len(HEADERS) + 1):
    ws.column_dimensions[get_column_letter(col_idx)].width = 14

# 给"年度目标"和"完成率"两列设置数字格式（演示 number_format API）
for row_idx in range(2, len(ROWS) + 2):
    ws.cell(row=row_idx, column=7).number_format = "#,##0"     # 千分位
    ws.cell(row=row_idx, column=8).number_format = "0.0%"       # 百分比

# ---------- 4. 保存 ----------
OUTPUT = "销售业绩表_原始.xlsx"
wb.save(OUTPUT)

print(f"[完成] 已生成：{OUTPUT}")
print(f"[行数] 表头 1 行 + 数据 {len(ROWS)} 行 = {len(ROWS) + 1} 行")
print(f"[列数] {len(HEADERS)} 列")
print()
print("接下来可以跑：")
print("  python 批量处理Excel_zh.py")
print("看 README.md 的『使用方法』即可。")