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

243
Vistas
¿Cómo completo (actualizo) un libro de Excel con datos de un modelo Django?

Rellené un modelo de Django con un marco de datos de pandas.

Para hacer esto, usé la función to_dict() () para que el modelo JSONField() Django acepte los datos.

Esto funciona bien. Ahora lo que estoy tratando de hacer es actualizar un archivo de Excel con estos datos.

Así que estoy accediendo a los datos en el modelo de Django e intento usar openpyxl para completar un Excel con los nuevos datos.

Sin embargo, tengo problemas porque aparece el error que dice que no se puede convertir a Excel.

¿Hay alguna forma alrededor de esto?

Mi modelo:

 class myvalues(models.Model): items_list = models.JSONField()

Función que está tratando de llenar Excel:

 values_to_go_into_excel_obtained_from_model = myvalues.objects.values_list(“items_list”, flat=True) path = file_for_download.my_file.path wb = load_workbook(path) ws = wb["Sheet1"] pd.read_excel(path, engine='openpyxl', sheet_name="Sheet1") for row, v in enumerate(values_to_go_into_excel_obtained_from_model, 2): ws.cell(row, 4, v) wb.save(path)

¿Alguna idea de por qué estoy recibiendo el error? Básicamente lo que estoy tratando de hacer es:

 Step 1: pandas df -> Django model of type Json Step 2: Access Django model values Step 3: put values from Django model into excel file

Tengo los pasos 1 y 2 pero no puedo obtener el paso 3.

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

0

Si desea guardar un json en particular en el archivo de Excel

 df = pd.DataFrame(dictionary_from_query) df.to_excel(filepath)

O si necesita agregar varios json, agréguelos a una lista y luego use esa lista para inicializar el marco de datos

 ds = [] for ...: # your loop ds += [d] # where d is one of the dicts df = pd.DataFrame(ds) df.to_excel(filepath)

En tu caso creo que los diccionarios ya están en una lista. Por lo tanto, solo puede usar el segundo método.

over 4 years ago · Santiago Trujillo Denunciar

0

Siguiendo https://stackoverflow.com/a/55131749/1021819 , parece posible que esté intentando escribir una lista en una celda (que es una forma de provocar el error que está viendo).

Por lo tanto, debe recorrer la lista:

 values_to_go_into_excel_obtained_from_model = myvalues.objects.values_list(“items_list”, flat=True) path = file_for_download.my_file.path wb = load_workbook(path) ws = wb["Sheet1"] # pd.read_excel(path, engine='openpyxl', sheet_name="Sheet1") # not required! for row, v in enumerate(values_to_go_into_excel_obtained_from_model, 2): for row_val, i_row_val in enumerate(row): ws.cell(row_val, 4+i_row_val, v) wb.save(path)
over 4 years ago · Santiago Trujillo Denunciar

0

Verifique su versión de openpyxl.

openpyxl 3.0.2 tiene un error al generar páginas de Excel. Este puede ser el problema

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