问题来源: 自学《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')