import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter

wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Estudo de Similares"

# Data of similar vessels
headers = [
    "Embarcação / Modelo",
    "Tipo / Origem",
    "LOA (m)",
    "Boca (m)",
    "Calado (m)",
    "Pontal (m)",
    "Razão L/B",
    "Razão B/T",
    "Desloc. (kg)",
    "Área Vélica (m²)",
    "Motor Aux. (HP)",
    "Lotação",
    "Material",
    "Pontos Fortes / Observações Técnicas"
]

rows = [
    [
        "Saveiro Ciclone 2 (Projeto)",
        "Saveiro BTS / Recreio & Pesca",
        7.00, 2.50, 0.60, 1.10, 2.80, 4.17, 2100, 30.0, "15 - 20 HP", 5, "Madeira Nobre (Jaqueira/Massaranduba)",
        "Excelente boca (2,50m) gerando alta estabilidade inicial. Calado de 0,60m ideal para Mar Grande."
    ],
    [
        "Saveiro Tradicional BTS (Penha/Içar)",
        "Tradicional Baiano (Recôncavo)",
        7.20, 2.45, 0.65, 1.05, 2.94, 3.77, 2300, 32.0, "18 HP Diesel", 6, "Madeira Maciça Tradicional",
        "Referência direta da Baía de Todos os Santos. Excelente capacidade de carga e navegação com vento fresco."
    ],
    [
        "Cornish Crabber 22 (Gaff Cutter)",
        "Cruiser Tradicional Britânico",
        6.70, 2.52, 0.70, 1.15, 2.66, 3.60, 2050, 29.5, "14 HP Diesel", 5, "PRFV / Madeira",
        "Boca e proporções muito semelhantes. Ótima estabilidade e cockpit amplo para lazer costeiro."
    ],
    [
        "Canoa de Voga / Saveiro de Pesca Baiano",
        "Tradicional Itaparica / BTS",
        6.80, 2.30, 0.55, 0.95, 2.96, 4.18, 1750, 26.0, "15 HP Popa/Diesel", 4, "Madeira Maciça (Jaqueira)",
        "Casco muito ágil em águas rasas e baixios da Ilha de Itaparica. Ótima velocidade com vento largo."
    ],
    [
        "Cape Cutter 19",
        "Gaff Cutter Clássico Moderno",
        5.80, 2.20, 0.45, 0.95, 2.64, 4.89, 1150, 22.0, "6 HP Popa", 4, "Compósito / Madeira",
        "Casco menor, mas com excelente relação estabilidade/calado baixo para praias e estuários."
    ]
]

# Styling
header_fill = PatternFill(start_color="1A365D", end_color="1A365D", fill_type="solid")
header_font = Font(name="Helvetica", size=11, bold=True, color="FFFFFF")
project_fill = PatternFill(start_color="EBF8FF", end_color="EBF8FF", fill_type="solid")
project_font = Font(name="Helvetica", size=10, bold=True, color="1A365D")
regular_font = Font(name="Helvetica", size=10, color="2D3748")
border_thin = Border(
    left=Side(style='thin', color='CBD5E0'),
    right=Side(style='thin', color='CBD5E0'),
    top=Side(style='thin', color='CBD5E0'),
    bottom=Side(style='thin', color='CBD5E0')
)

ws.append(["ESTUDO DE SIMILARES - PROJETO SAVEIRO CICLONE 2 (7,0 M)"])
ws.merge_cells("A1:N1")
title_cell = ws["A1"]
title_cell.font = Font(name="Helvetica", size=14, bold=True, color="1A365D")
title_cell.alignment = Alignment(horizontal="left", vertical="center")
ws.row_dimensions[1].height = 30

ws.append([]) # empty row
ws.append(headers)
ws.row_dimensions[3].height = 25

for col_idx in range(1, len(headers) + 1):
    cell = ws.cell(row=3, column=col_idx)
    cell.fill = header_fill
    cell.font = header_font
    cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)

for row_idx, r_data in enumerate(rows, start=4):
    ws.append(r_data)
    ws.row_dimensions[row_idx].height = 28
    is_project = (row_idx == 4)
    for col_idx in range(1, len(r_data) + 1):
        cell = ws.cell(row=row_idx, column=col_idx)
        cell.border = border_thin
        if is_project:
            cell.fill = project_fill
            cell.font = project_font
        else:
            cell.font = regular_font
        
        # Alignment
        if col_idx in [1, 2, 14]:
            cell.alignment = Alignment(horizontal="left", vertical="center")
        elif col_idx in [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]:
            cell.alignment = Alignment(horizontal="center", vertical="center")

# Adjust col widths
for col in ws.columns:
    max_len = 0
    col_letter = get_column_letter(col[0].column)
    for cell in col:
        if cell.row > 2 and cell.value:
            max_len = max(max_len, len(str(cell.value)))
    ws.column_dimensions[col_letter].width = max(max_len + 3, 12)

ws.column_dimensions['A'].width = 28
ws.column_dimensions['B'].width = 24
ws.column_dimensions['N'].width = 38

xlsx_path = "/home/magdalena/eee/alunos/rafael-rosa-batista/Estudo_de_Similares_Saveiro_Ciclone_2.xlsx"
wb.save(xlsx_path)
print("XLSX saved at:", xlsx_path)
