python: AttributeError: module 'openpyxl' has no attribute 'charts' 解决方法

问题来源: 自学《Python编程快速上手》P239内容,运行如下代码时,程序报错。

import openpyxl, os
os.chdir("C:\\")
wb = openpyxl.Workbook()
sheet  = wb.active
for i in range(1, 11):            # Create some data in column A
    sheet['A' + str(i)] = i
refObj = openpyxl.charts.Reference(sheet, (1,1), (10, 1))

seriesObj = openpyxl.charts.Series(refObj, title = 'First series')
chartObj = openpyxl.charts.BarChart()
chartObj.append(seriesObj)

chartObj.drawing.top = 50           # set the position
chartObj.drawing.left = 100
chartObj.drawing.width = 300        # set the size
chartObj.drawing.height = 200

sheet.add_chart(chartObj)

wb.save('sampleChart.xlsx')

错误提示:  AttributeError: module 'openpyxl' has no attribute 'charts'

问题分析:openpyxl在后续版本中已做适当修改。此外,本书原著的作者也已对该章节做了修改,见链接:点击打开链接

问题解决:修改后的代码如下。

import openpyxl, os
os.chdir("C:\\")

wb = openpyxl.Workbook()
sheet  = wb.active
for i in range(1, 11):            # Create some data in column A
    sheet['A' + str(i)] = i

refObj = openpyxl.chart.Reference(sheet, min_row = 1, min_col = 1, max_row = 10, max_col = 1)

seriesObj = openpyxl.chart.Series(refObj, title = 'First series')

chartObj = openpyxl.chart.BarChart()

chartObj.title = 'My Chart'

chartObj.append(seriesObj)

sheet.add_chart(chartObj, 'C5')

wb.save('sampleChart.xlsx')

猜你喜欢

转载自blog.csdn.net/weixin_41569319/article/details/80821715