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

Using xlsxwriter to create charts from specified cells

好吧,所以我对 excel 整体来说还比较陌生,被要求编写一个脚本来从数据库中获取一些数据并从中生成 sheet。我做到了,现在他们要求我添加图表以更简单的格式显示这些数据,因为你知道范围蔓延等等。无论如何,我正在尝试创建一个饼图,该饼图引用来自彼此不相邻的单独 sheet 中的两个特定单元格。我可以让它从这两个单元格之间的所有内容中绘制出一个范围,但我需要它专门只使用我提供的单元格。

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

这是我目前创建的两个点,但其中没有填充数据。我需要它从一个名为 Total Counts 的 sheet 中绘制出单元格 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,'Total Counts'!$B)",
                            'points': [
                                {'fill': {'color': 'green'}},
                                {'fill': {'color': 'red'}},
                            ],
                            })

executive.insert_chart(0, 0, yesterday_chart)



book.close()

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

同时,这是一个工作示例:

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,'Total Counts'!$A)"})

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

workbook.close()

输出: