Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!