openpyxl系列名称使用单元格引用



使用python和openpyxl,我试图使用单元格参考值作为要放入XY散点图的数据系列的标题。我已经为图表标题找到了一个类似的解决方案,但我不能让它适用于每个系列。

以下是关注的问题和我对解决方案的最佳猜测(叶子系列称为"Series1",默认名称):

series = Series(values, xvalues, title_from_data=False)
series.SeriesLabel = xl.chart.data_source.StrRef( "'Sheet'!C3")

目标是引用单元格值"C3"在工作表上工作表为例。我能够使用单元格引用图表标题使用以下代码,但系列对象没有。tx。strRef属性:

c1.title.tx.strRef = xl.chart.data_source.StrRef( "'Sheet'!C1")

完整代码在这里:

import numpy as np
import pandas as pd
import openpyxl as xl
from tkinter import filedialog
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.chart import (
ScatterChart,
Reference,
Series,
)
from openpyxl.drawing.line import LineProperties
from openpyxl.chart.shapes import GraphicalProperties
from openpyxl.chart.trendline import Trendline

sampleData = [["Data1","Title goes here:","Dummy Title"],
["CFM", "SP","HP"],
[5000,0.1,4.0],
[4500,0.2,4.1],
[4000,0.3,4.2],
[3500,0.5,4.2],
[3000,0.8,4.2],
[2500,1.1,4.2],
[2000,1.5,4.2],
[1500,1.8,4.2],
[1000,2.0,4.3]
]
wb = Workbook()
ws = wb.active
for row in sampleData:
ws.append(row)
c1 = ScatterChart()
c1.title = "" 
c1.title.tx.strRef = xl.chart.data_source.StrRef( "'Sheet'!C1")
xvalues = Reference(ws, min_col=1, min_row=3, max_row=11)
values = Reference(ws, min_col=2, min_row=2, max_row=11)
series = Series(values, xvalues, title_from_data=False)
series.SeriesLabel = xl.chart.data_source.StrRef( "'Sheet'!C3")
c1.series.append(series)
ws.add_chart(c1, "B15")
wb.save("default.xlsx")

几天前我遇到了同样的问题。以下内容适合我:

代替:

series.SeriesLabel = xl.chart.data_source.StrRef( "'Sheet'!C3")

试题:

series.title = xl.chart.series.SeriesLabel(xl.chart.data_source.StrRef("'Sheet'!C3"))

最新更新