Openpyxl图表 – 来自随机未连接单元的数据序列可能吗?

我目前正在尝试使用python模块openpyxl,尝试在工作中自动执行一些任务并自动生成电子表格。 对于需要的工作表之一,我需要从列表数据生成散点图。 但是,散点图应该由连接两个点的多条直线组成,因此散点图中的每个单独的x / y系列应仅连接两个点。

一般来说,我从openpyxl文档中发现,像这个小例子那样生成了散点图:

from openpyxl import Workbook from openpyxl.chart import ( ScatterChart, Reference, Series, ) wb = Workbook() ws = wb.active rows = [ ['Size', 'Batch 1', 'Batch 2'], [2, 40, 30], [3, 40, 25], [4, 50, 30], [5, 30, 25], [6, 25, 35], [7, 20, 40], ] for row in rows: ws.append(row) chart = ScatterChart() chart.title = "Scatter Chart" chart.style = 13 chart.x_axis.title = 'Size' chart.y_axis.title = 'Percentage' xvalues = Reference(ws, min_col=1, min_row=2, max_row=7) for i in range(2, 4): values = Reference(ws, min_col=i, min_row=1, max_row=7) series = Series(values, xvalues, title_from_data=True) chart.series.append(series) ws.add_chart(chart, "A10") wb.save("scatter.xlsx") 

但是,我想要在散点中连接的两个点的x(和y)坐标不在相邻的单元格中。 所以,当我通过按住'ctrl'并select两个单元格在Excel中手动导入数据系列时,我得到如下所示:

'表$ A $ 4;!表$ A $ 6'

代替

'表$ A $ 4:!$ A $ 6'

当拖动光标select一个单元格的范围。

对于只有两个单独的不相邻的单元格,这意味着我没有明确的min_row / min_col / max_row等,但只有一个单元格对(x和y)的列表。 有没有办法在openpyxl中创build一个数据序列作为单元列表,而不是连接/相邻范围?

帮助将不胜感激! 🙂

目前还没有计划支持图表系列中不连续的单元格区域。 我build议你尝试安排你的数据或创build引用它,这将允许你使用连续的范围。

你确定这不起作用吗? 我已经修改了像你这样的情况的例子,它似乎为我工作:

 from openpyxl import Workbook from openpyxl.chart import ( ScatterChart, Reference, Series, ) wb = Workbook() ws = wb.active rows = [ ['Size'], [2, 'Batch 1', 'Batch 2'], [3, 40, 30], [4, 40, 25], [5, 50, 30], [6, 30, 25], [7, 25, 35], [None, 20, 40], ] for row in rows: ws.append(row) chart = ScatterChart() chart.title = "Scatter Chart" chart.style = 13 chart.x_axis.title = 'Size' chart.y_axis.title = 'Percentage' xvalues = Reference(ws, min_col=1, min_row=2, max_row=7) for i in range(2, 4): values = Reference(ws, min_col=i, min_row=2, max_row=8) series = Series(values, xvalues, title_from_data=True) chart.series.append(series) ws.add_chart(chart, "A10") wb.save("scatter.xlsx") 

结果:

输出电子表格的屏幕截图