Forum Discussion
Get xlsx file from website
import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Font, Alignment
# Data for February 2026
days = list(range(1, 29))
nombres_dias = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] * 4
holidays = [16, 17] # Carnival
# Definition of tabs and personal based on user files
Sectors = {
"TBAR-RECO-DEMSA-QUAL-PADI": ["BARRIOS", "MENDOZA", "VERA", "DIAZ J", "AGUIRRE", "GIMENEZ", "PEREYRA J", "RUIZ DIAZ", "TORRES", "GOMEZ C", "PARED"],
"ZAP-BREN-CBUS-PLIZ-EIT-HOL": ["VILLALBA G", "ORTEGA", "ROMERO", "SOSA E", "DIAZ S", "ROMERO S", "CABRERA"],
"CELU-SINEA-ASTILL-PPANAL-ALZ": ["PUEBLA", "SALAS", "MEDINA", "CÁCERES", "BRITOS", "LEDESMA"],
"GREIF-NETA-SINTER-BCA-COV": ["ZURITA", "VILLALBA", "TEVEZ", "VAZQUEZ", "SILVA", "CORREA"],
"ASPEN-YAGUAR-CERRONEGRO": ["PEREZ LORENA", "DIAZ PATRICIO", "NAVARRO", "ARRIOLA", "PEREZ RAUL"],
"CHACRAS - SHELL": ["FLORES ADRIÁN", "LEGUIZAMÓN G.", "GONZÁLEZ JORGE", "DURAND NICOLÁS"],
"SUPERV-MONITORING": ["ALBORNOZ"],
"MISCELLANEOUS": ["CONTINGENT STAFF 1", "CONTINGENT STAFF 2"] # Structure-based placeholder
}
# Crear el Excel
file_path = "/mnt/data/FEBRERO_2026_Planilla_Turnos.xlsx"
wb = Workbook()
wb.remove(wb.active) # Quitar hoja por defecto
# Estilos
fill_fin_semana = PatternFill(start_color="FFEB9C", end_color="FFEB9C", fill_type="solid") # Amarillo claro
fill_feriado = PatternFill(start_color="FFC7CE", end_color="FFC7CE", fill_type="solid") # Rojo claro
header_font = Font(bold=True)
center_align = Alignment(horizontal="center")
for nombre_hoja, personal in sectores.items():
ws = wb.create_sheet(title=nombre_hoja[:31]) # Excel character limit
# Day Headers
ws.cell(row=1, column=1, value="PERSONAL")
For i, dia in enumerate(dias):
col = i + 2
cell_dia = ws.cell(row=1, column=col, value=day)
cell_nom = ws.cell(row=2, column=col, value=nombres_dias[i])
# Apply formatting to weekends (Sun is i=0, 7, 14, 21 / Sat is i=6, 13, 20, 27)
if nombres_dias[i] in ["Sat", "Sun"]:
cell_dia.fill = fill_fin_semana
cell_nom.fill = fill_fin_semana
# Format holidays
If day on holidays:
cell_dia.fill = fill_feriado
cell_nom.fill = fill_feriado
cell_dia.value = f"{day} (F)"
# Cargar Personal
for row_idx, nombre in enumerate(personal, start=3):
ws.cell(row=row_idx, column=1, value=nombre)
# Pintar celdas de fin de semana para el personal
for col_idx, dia in enumerate(dias, start=2):
if nombres_dias[col_idx-2] in ["Sab", "Dom"]:
ws.cell(row=row_idx, column=col_idx).fill = fill_fin_semana
if dia in feriados:
ws.cell(row=row_idx, column=col_idx).fill = fill_feriado
wb.save(file_path)