"""
演示：使用 corder 重排 MultiIndex columns 后导出到 Excel
"""
import pandas as pd
from pandaspro.core.tools.corder import corder
from pandaspro.io.excel.putexcel import PutxlSet

# 创建带有 MultiIndex columns 的 DataFrame
data = {
    ('CMU', 'ACS_Staff'): [10, 20, 30, 40],
    ('CMU', 'Total'): [50, 60, 70, 80],
    ('VP', 'ACS_Staff'): [15, 25, 35, 45],
    ('VP', 'Total'): [55, 65, 75, 85],
    ('Region', 'Name'): ['North', 'South', 'East', 'West'],
}

df_original = pd.DataFrame(data)

print("="*70)
print("原始 DataFrame 的列顺序:")
print("="*70)
print(df_original)
print("\n列顺序:", df_original.columns.tolist())

# 使用 corder 重新排列列
print("\n" + "="*70)
print("重新排列后的 DataFrame:")
print("="*70)

# 场景 1: 将 VP 的列移到最前面
df_reordered1 = corder(df_original, ['VP__Total', 'VP__ACS_Staff'])
print("\n【场景 1】将 VP 的列移到最前面:")
print(df_reordered1)
print("列顺序:", df_reordered1.columns.tolist())

# 场景 2: 将 Region__Name 移到最前面
df_reordered2 = corder(df_original, 'Region__Name')
print("\n【场景 2】将 Region__Name 移到最前面:")
print(df_reordered2)
print("列顺序:", df_reordered2.columns.tolist())

# 场景 3: 将 Total 列都移到最后
df_reordered3 = corder(df_original, ['CMU__Total', 'VP__Total'], pos='end')
print("\n【场景 3】将所有 Total 列移到最后:")
print(df_reordered3)
print("列顺序:", df_reordered3.columns.tolist())

# 导出到 Excel
print("\n" + "="*70)
print("导出到 Excel...")
print("="*70)

output_file = 'demo_corder_reordered.xlsx'
ps = PutxlSet(output_file)

# Sheet 1: 原始顺序
ps.putxl(
    df_original,
    sheet_name='01_原始顺序',
    cell='A1',
    index=False,
    tab_color='gray',
    df_format={
        'fill=lightgray; bold=True': 'header'
    }
)

# Sheet 2: VP 列在前
ps.putxl(
    df_reordered1,
    sheet_name='02_VP列在前',
    cell='A1',
    index=False,
    tab_color='blue',
    df_format={
        'fill=lightblue; bold=True': 'columns(c="VP__*")',
        'fill=lightgray': 'header'
    }
)

# Sheet 3: Region 列在前
ps.putxl(
    df_reordered2,
    sheet_name='03_Region列在前',
    cell='A1',
    index=False,
    tab_color='green',
    df_format={
        'fill=lightgreen; bold=True': 'columns(c="Region__Name")',
        'fill=lightgray': 'header'
    }
)

# Sheet 4: Total 列在后
ps.putxl(
    df_reordered3,
    sheet_name='04_Total列在后',
    cell='A1',
    index=False,
    tab_color='orange',
    df_format={
        'fill=lightyellow': 'columns(c="*__Total")',
        'fill=lightgray': 'header'
    }
)

# Sheet 5: 带格式的复杂示例
df_complex = corder(df_original, 'Region__Name')
ps.putxl(
    df_complex,
    sheet_name='05_完整格式示例',
    cell='A1',
    index=False,
    tab_color='purple',
    df_format={
        'fill=lightgreen; bold=True; align=center': 'columns(c="Region__Name", header=True)',
        'fill=lightblue; number_format=#,##0': 'columns(c="*__ACS_Staff")',
        'fill=lightyellow; number_format=#,##0': 'columns(c="*__Total")',
        'fill=gray; bold=True; font_color=white; align=center': 'header'
    },
    config={
        'Region__Name': {'width': 15},
        'CMU__ACS_Staff': {'width': 12},
        'CMU__Total': {'width': 12},
        'VP__ACS_Staff': {'width': 12},
        'VP__Total': {'width': 12}
    }
)

print(f"\n✅ 成功导出到: {output_file}")
print("\n包含以下工作表:")
print("  1. 01_原始顺序 - 展示原始列顺序")
print("  2. 02_VP列在前 - VP 列移到最前面（蓝色标签）")
print("  3. 03_Region列在前 - Region 列移到最前面（绿色标签）")
print("  4. 04_Total列在后 - Total 列移到最后（橙色标签）")
print("  5. 05_完整格式示例 - 带完整格式的示例（紫色标签）")
print("\n请打开 Excel 文件查看效果！")
print("="*70)

