Usa Python para generar grafo en Excel

He estado tratando de generar datos en Excel. Generé el archivo .CSV. Así que hasta ese punto es fácil. Pero generar gráfico es bastante difícil en Excel …

Me pregunto si Python puede generar datos Y gráficos en Excel. Si hay ejemplos o fragmentos de código, no dude en publicarlo 🙂

O una solución puede ser usar python para generar gráficos en formato gráfico como .jpg, etc o .pdf también está bien … siempre que la solución no necesite dependencia, como la necesidad de instalar la biblioteca boost.

Tienes 2 opciones:

Si está en Windows, puede usar la biblioteca pywin32 (incluida en ActivePython ) para automatizar Excel usando la automatización OLE .

from win32com.client import Dispatch ex = Dispatch("Excel.Application") # you can use the ex object to invoke Excel methods etc. 

Si todo lo que desea es generar gráficos básicos, etc. puede usar matplotlib .

Sí, Xlsxwriter [ docs ] [ pypi ] tiene muchas utilidades para crear gráficos de Excel en Python. Sin embargo, deberá utilizar un formato de archivo xlsx, no hay mucha retroalimentación para los parámetros incorrectos y no puede leer su salida.

 import xlsxwriter import random # Example data # Try to do as much processing outside of initializing the workbook # Everything beetween Workbook() and close() gets trapped in an exception random_data = [random.random() for _ in range(10)] # Data location inside excel data_start_loc = [0, 0] # xlsxwriter rquires list, no tuple data_end_loc = [data_start_loc[0] + len(random_data), 0] workbook = xlsxwriter.Workbook('file.xlsx') # Charts are independent of worksheets chart = workbook.add_chart({'type': 'line'}) chart.set_y_axis({'name': 'Random jiggly bit values'}) chart.set_x_axis({'name': 'Sequential order'}) chart.set_title({'name': 'Insecure randomly jiggly bits'}) worksheet = workbook.add_worksheet() # A chart requires data to reference data inside excel worksheet.write_column(*data_start_loc, data=random_data) # The chart needs to explicitly reference data chart.add_series({ 'values': [worksheet.name] + data_start_loc + data_end_loc, 'name': "Random data", }) worksheet.insert_chart('B1', chart) workbook.close() # Write to file 

salida de ejemplo

Le sugiero que pruebe gnuplot mientras dibuja un gráfico a partir de archivos de datos.

Si decide utilizar matplotlib, consulte mi Excel para Pythorkbooks de Python para obtener los datos. Le permite recuperar datos de manera eficiente y fácil como una gran cantidad de matrices (el tipo de datos nativo para matplotlib).

https://sourceforge.net/projects/pyworkbooks/

@ David Gao, estoy mirando hacer algo similar. Actualmente estoy considerando usar el csv sin formato o convertirlo a json y solo dejarlo en una carpeta que está siendo leída por jqplot. Biblioteca de trazado y graficación de jquery . Luego, todo lo que debo hacer es que el usuario o yo mismo muestre la ttwig en cualquier navegador web.