使用xlsxwriter从指定的单元格创建图表

时间:2016-09-26 14:57:06

标签: excel python-3.x charts xlsx xlsxwriter

好吧所以我很擅长excel作为一个整体,并被要求编写一个脚本来从数据库中获取一些数据并从中制作一张表。我做了,现在他们已经要求我添加图表以更简单的格式显示这些数据,因为你知道范围蔓延和所有。无论如何,我试图创建一个饼图,它引用一个彼此不相邻的单独工作表中的两个特定单元格。我可以让它从这两个单元格之间的所有内容中划出一个范围,但我需要它才能专门使用我提供的单元格。

executive = book.add_worksheet("Executive Summary")
yesterday_chart = book.add_chart({'type': 'pie'})
yesterday_chart.add_series({'name': 'Yesterdays Installs',
                            'values': '=(\'Total Counts\'!$B$2,\'Total Counts\'!$J$2)',
                            'points': [
                                {'fill': {'color': 'green'}},
                                {'fill': {'color': 'red'}},
                            ],
                            })

这就是我目前所拥有的,它创建了两个点,但没有填充数据。我需要它从名为Total Counts的表格中绘制单元格B2和J2。在此先感谢您的协助,以挽救我的理智。

编辑:添加更多代码并显示输出。

#!/usr/bin/python3

import xlsxwriter

book = xlsxwriter.Workbook("Testing.xlsx")

counts = book.add_worksheet("Total Counts")
r = 0
c = 0
counts.write(0, 0, "Total Installed to date")
counts.write(0, 1, "Installed Yesterday")
counts.write(0, 2, " Missed Yesterday")
counts.write(0, 3, "Scheduled Yesterday")

executive = book.add_worksheet("Executive Summary")
yesterday_chart = book.add_chart({'type': 'pie'})

r += 1
counts.write(r, c, "100")
counts.set_column(c, c, len("Total Installed to date"))
c += 1
counts.write(r, c, "25")
counts.set_column(c, c, len("Installed Yesterday"))
c += 1
counts.write(r, c, "5")
counts.set_column(c, c, len("Missed Yesterday"))
c += 1
counts.write(r, c, "30")
counts.set_column(c, c, len("Scheduled Yesterday"))
c = 0

yesterday_chart.add_series({'name': 'Yesterdays Installs',
                            'values': "=('Total Counts'!$D$2,'Total Counts'!$B$2)",
                            'points': [
                                {'fill': {'color': 'green'}},
                                {'fill': {'color': 'red'}},
                            ],
                            })

executive.insert_chart(0, 0, yesterday_chart)



book.close()

Total sheet

Output from graph

1 个答案:

答案 0 :(得分:2)

该语法应该有效。也许发布一个更全面的工作示例,以便我们可以看到问题所在。

与此同时,这是一个有效的例子:

import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet('Total Counts')

# Create a new Chart object.
chart = workbook.add_chart({'type': 'pie'})

# Write some data to add to plot on the chart.
worksheet.write_column('A1', [2, 4, 6, 8, 10])

# Add a data series bases on some points.
chart.add_series({'values': "=('Total Counts'!$A$1,'Total Counts'!$A$3)"})

# Insert the chart into the worksheet.
worksheet.insert_chart('C3', chart)

workbook.close()

输出: enter image description here

相关问题