Guía de Berrinches
import openpyxl
from openpyxl.styles import Border, Side, Alignment, Font, PatternFill
from openpyxl.worksheet.page import PageMargins
def create_template():
wb = openpyxl.Workbook()
for s in wb.sheetnames:
del wb[s]
ws1 = wb.create_sheet(title=”1. Frentes”)
ws2 = wb.create_sheet(title=”2. Reversos”)
dashed_side = Side(border_style=”dashed”, color=”A0A0A0″)
dashed_border = Border(left=dashed_side, right=dashed_side, top=dashed_side, bottom=dashed_side)
# Ancho de cada tarjeta (~7cm en unidades Excel)
ancho_tarjeta = 38.5
# Alto de cada tarjeta (~10cm en puntos Excel)
alto_tarjeta = 328
# Espacio entre tarjetas (~0.75cm)
ancho_espacio = 4 # ~0.75cm en unidades de ancho Excel
alto_espacio = 25 # ~0.75cm en puntos de alto Excel
for idx, sheet in enumerate([ws1, ws2]):
sheet.page_setup.paperSize = sheet.PAPERSIZE_LETTER
# Márgenes simétricos
sheet.page_margins = PageMargins(left=0.75, right=0.75, top=0.5, bottom=0.5, header=0, footer=0)
sheet.print_options.horizontalCentered = True
sheet.print_options.verticalCentered = True
# Columna A: Tarjeta izquierda
sheet.column_dimensions[‘A’].width = ancho_tarjeta
# Columna B: Espacio entre tarjetas
sheet.column_dimensions[‘B’].width = ancho_espacio
# Columna C: Tarjeta derecha
sheet.column_dimensions[‘C’].width = ancho_tarjeta
# Fila 1: Tarjeta superior
sheet.row_dimensions[1].height = alto_tarjeta
# Fila 2: Espacio entre tarjetas
sheet.row_dimensions[2].height = alto_espacio
# Fila 3: Tarjeta inferior
sheet.row_dimensions[3].height = alto_tarjeta
# Posiciones de las 4 tarjetas: (fila, columna)
card_positions = [(1, 1), (1, 3), (3, 1), (3, 3)] # A1, C1, A3, C3
for i, (r, c) in enumerate(card_positions):
cell = sheet.cell(row=r, column=c)
cell.border = dashed_border
cell.alignment = Alignment(horizontal=’center’, vertical=’center’, wrap_text=True)
cell.font = Font(color=”A0A0A0″, italic=True, size=11)
if idx == 0: # Frentes
carta_num = i + 1
cell.value = f”Pegar Frente {carta_num}\n(7 x 10 cm)”
else: # Reversos (espejados horizontalmente para doble cara)
# Espejo: las columnas se invierten
# Frente: A1=1, C1=2, A3=3, C3=4
# Reverso: C1=1, A1=2, C3=3, A3=4
mirror_map = {
(1, 1): 2, # A1 reverso = Carta 2
(1, 3): 1, # C1 reverso = Carta 1
(3, 1): 4, # A3 reverso = Carta 4
(3, 3): 3, # C3 reverso = Carta 3
}
carta_num = mirror_map[(r, c)]
cell.value = f”Pegar Reverso {carta_num}\n(7 x 10 cm)\n*ESPEJO*”
output_path = ‘/Users/nakaridrico/.gemini/antigravity/playground/pyro-bohr/Plantilla_Cartas_ConEspacio.xlsx’
wb.save(output_path)
print(f”✅ Excel guardado en: {output_path}”)
print(f”\n📐 Configuración:”)
print(f” Tarjeta: 7 x 10 cm”)
print(f” Espacio entre tarjetas: ~0.75 cm”)
print(f” Layout: 2×2 tarjetas por hoja”)
print(f” Hoja 1: Frentes”)
print(f” Hoja 2: Reversos (espejados para doble cara)”)
create_template()