Мой код Python для создания диаграмм из pywin32 в Excel:
def add_chart1(location, sheet, range1, title, left, right, height, width, charttype):
pythoncom.CoInitialize()
xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
ss = xl.Workbooks.Open("demo.xlsx")
worksheet = ss.Worksheets.Item(sheet)
workchart = worksheet.ChartObjects().Add(left, right, height, width).Activate()
xl.ActiveChart.ChartType = charttype
xl.ActiveChart.Axes(c.xlValue).HasMajorGridlines = False
xl.ActiveChart.Axes(c.xlCategory).HasTitle = True
xl.ActiveChart.SetSourceData(Source=worksheet.Range(range1))
#workchart.ChartType = 57 # 3DPie
xl.ActiveChart.HasTitle = True
workchart_title = xl.ActiveChart.ChartTitle
workchart_title.Text = title
xl.ActiveChart.HasLegend = True
xl.ActiveChart.Legend.LegendEntries(1)
xl.ActiveChart.Legend.Position = -4107 # Right Position
ss.SaveAs("demo.xlsx")
ss.Close(False); workbook=None
xl.Application.Quit()
Я выполняю это в приложении колбы. Вызов функции:
import win32com.client as win32
from win32com.client import constants as c
import pythoncom
from flask import *
app = Flask(__name__)
@app.route('/', methods = ['POST'])
def index():
add_chart1('demo.xlsx', 'Chart',range1, 'Visualization', 350, 32, 600, 300, c.xlColumnClustered)
Результат:
File "C:\Anaconda3\Lib\site-packages\win32com\client\__init__.py", line 178, in __getattr__
raise AttributeError(a)
AttributeError: xlColumnClustered
Как видно из других вопросов SO, я очистил кеш в каталоге temp\1\gen_py, но ошибка все равно сохраняется.
Я попробовал все решения этого вопроса.
Но ни один из них не сработал.






Иногда перечисление xlChartType не загружается в первом экземпляре. В таких случаях вместо названий указывайте номер диаграммы, т. е. ее значение. для xlColumnClustered это 51
Значения вы можете найти здесь
Почему вы ожидаете, что
constantsотwin32com.clientбудет иметьxlColumnClustered? Из документации видно, что значениеxlColumnClusteredбудет51, если у вас нет доступа к перечислению.