#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter

OUT = '/Users/liuxinyuan/Desktop/Hermes输出-工作类/资料/Tth变体_DNA_RNA_活性表_20261028.xlsx'
os.makedirs(os.path.dirname(OUT), exist_ok=True)

wb = Workbook()
ws = wb.active
ws.title = '活性表'

navy = '0B3F7A'
blue = '1A73E8'
light = 'EAF3FD'
grey = 'F5F8FB'
border_color = 'CFE0EF'
thin = Side(style='thin', color=border_color)
border = Border(left=thin, right=thin, top=thin, bottom=thin)

ws.merge_cells('A1:D1')
c = ws['A1']
c.value = 'Tth 变体对 DNA / RNA 的活性（Mg²⁺ / Mn²⁺）'
c.font = Font(name='PingFang SC', size=14, bold=True, color='FFFFFF')
c.fill = PatternFill('solid', fgColor=navy)
c.alignment = Alignment(horizontal='left', vertical='center')
ws.row_dimensions[1].height = 26

headers = ['酶变体', '底物', 'Mg²⁺', 'Mn²⁺']
for j, h in enumerate(headers, 1):
    c = ws.cell(row=3, column=j, value=h)
    c.font = Font(name='PingFang SC', size=11, bold=True, color=navy)
    c.fill = PatternFill('solid', fgColor=light)
    c.alignment = Alignment(horizontal='center', vertical='center')
    c.border = border
ws.row_dimensions[3].height = 22

rows = [
    ('Tth A', 'DNA', '√', '√'),
    ('Tth A', 'RNA', '×', '√'),
    ('Tth B', 'DNA', '√', '?'),
    ('Tth B', 'RNA', '√', '?'),
    ('Tth C', 'DNA', '×', '×'),
    ('Tth C', 'RNA', '√', '?'),
]
symbol_style = {
    '√': Font(name='Arial', size=14, bold=True, color='1E8E5A'),
    '×': Font(name='Arial', size=14, bold=True, color='C0392B'),
    '?': Font(name='Arial', size=14, bold=True, color='D68910'),
}
for i, row in enumerate(rows, 4):
    for j, val in enumerate(row, 1):
        c = ws.cell(row=i, column=j, value=val)
        c.border = border
        c.alignment = Alignment(horizontal='center' if j > 1 else 'left', vertical='center')
        if j <= 2:
            c.font = Font(name='PingFang SC', size=11, color='17324D', bold=(j == 1))
        else:
            c.font = symbol_style[val]
        if i % 2 == 0:
            c.fill = PatternFill('solid', fgColor=grey)
    ws.row_dimensions[i].height = 21

# 图例与说明
ws.merge_cells('A11:D11')
c = ws['A11']
c.value = '图例：√ 有活性　　× 无活性　　? 未确认 / 待测'
c.font = Font(name='PingFang SC', size=10, color='415A70')
c.alignment = Alignment(horizontal='left', vertical='center')

ws.merge_cells('A12:D12')
c = ws['A12']
c.value = '注：按手写原表转录；Tth A 的 DNA/RNA 行及 Tth B 的 DNA 行有涂改，涂改内容未纳入。'
c.font = Font(name='PingFang SC', size=9, color='7B8EA2')
c.alignment = Alignment(horizontal='left', vertical='center', wrap_text=True)
ws.row_dimensions[12].height = 30

widths = {'A': 16, 'B': 14, 'C': 14, 'D': 14}
for col, w in widths.items():
    ws.column_dimensions[col].width = w

ws.freeze_panes = 'A4'
ws.auto_filter.ref = 'A3:D9'
ws.sheet_view.showGridLines = False

# 打印设置
ws.page_setup.orientation = 'portrait'
ws.page_setup.paperSize = ws.PAPERSIZE_A4
ws.page_setup.fitToWidth = 1
ws.page_setup.fitToHeight = 1
ws.sheet_properties.pageSetUpPr.fitToPage = True
ws.print_area = 'A1:D12'

wb.save(OUT)
print(OUT)
