Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.2K
Vistas
Aplicar formato a toda la fila Openpyxl

Tengo un archivo de Excel que quiero formatear. La primera fila (excluyendo los encabezados, por lo que la fila 2) debe estar en rojo y en cursiva .

la documentación de Openpyxl dice :

Si desea aplicar estilos a filas y columnas enteras, debe aplicar el estilo a cada celda usted mismo

Personalmente, creo que esto apesta... Aquí está mi solución:

 import openpyxl from openpyxl.styles import NamedStyle from openpyxl import load_workbook from openpyxl.styles.colors import RED from openpyxl.styles import Font # I normally import a lot of stuff... I'll also take suggestions here. file = 'MY_PATH' wb = load_workbook(filename=file) sheet = wb.get_sheet_by_name('Output') for row in sheet.iter_rows(): for cell in row: if '2' in cell.coordinate: # using str() on cell.coordinate to use it in sheet['Cell_here'] sheet[str(cell.coordinate)].font = Font(color='00FF0000', italic=True) wb.save(filename=file)

El primer inconveniente es que si hay más celdas como A24 , mi ciclo le aplicará el formato. Puedo arreglar esto con una expresión regular. ¿Sería ese el enfoque correcto?

En última instancia, ¿hay una mejor manera de aplicar un formato a toda la fila? También. ¿Alguien puede indicarme la dirección correcta para obtener una buena documentación de Openpyxl? Solo me enteré de sheet.iter_rows() y cell.coordinates en Stack.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No es necesario iterar en todas las filas si solo tiene la intención de cambiar el color de la segunda fila, puede iterar en una sola fila de la siguiente manera:

 import openpyxl from openpyxl import load_workbook from openpyxl.styles import Font file = 'input.xlsx' wb = load_workbook(filename=file) ws = wb['Output'] red_font = Font(color='00FF0000', italic=True) # Enumerate the cells in the second row for cell in ws["2:2"]: cell.font = red_font wb.save(filename=file)

Dándote algo como:

captura de pantalla de excel

El acceso a varias celdas se describe en los documentos de openpyxl: Acceder a muchas celdas

El formato "2:2" enumera las celdas en una sola fila. Si se usa "2:3" , esto devolverá las celdas una fila a la vez, es decir, la fila 2 y luego la fila 3, por lo que necesitaría un bucle adicional.


Alternativamente, para usar un NamedStyle :

 import openpyxl from openpyxl import load_workbook from openpyxl.styles import Font, NamedStyle file = 'input.xlsx' wb = load_workbook(filename=file) ws = wb['Output'] # Create a NamedStyle (if not already defined) if 'red_italic' not in wb.named_styles: red_italic = NamedStyle(name="red_italic") red_italic.font = Font(color='00FF0000', italic=True) wb.add_named_style(red_italic) # Enumerate the cells in the second row for cell in ws["2:2"]: cell.style = 'red_italic' wb.save(filename=file)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda