wb1 = openpyxl.load_workbook(source_file) ws1 = wb1.active wb2 = openpyxl.load_workbook(target_file) wb2_oldsheetname = wb2.sheetnames target_ws_name = 'sd' + source_file[-6] wb2.active.title = target_ws_name ws2 = wb2.active python修改sheet名后为target_ws_name,如何更新表格里包含图表的引用数据源中数据系列涉及到的sheet名,更新并输出代码
时间: 2023-12-10 20:38:25 浏览: 75
可以使用`openpyxl.chart.Reference`对象中的`series`属性来获取数据系列涉及到的sheet名,然后使用字符串的`replace()`方法进行替换。
以下是示例代码:
```python
import openpyxl
from openpyxl.chart import Reference
# 加载工作簿
wb1 = openpyxl.load_workbook(source_file)
ws1 = wb1.active
wb2 = openpyxl.load_workbook(target_file)
wb2_oldsheetname = wb2.sheetnames
target_ws_name = 'sd' + source_file[-6]
wb2.active.title = target_ws_name
ws2 = wb2.active
# 更新数据系列涉及到的sheet名
for chart in ws2.charts:
for series in chart.series:
# 获取数据系列涉及到的sheet名
sheetname = series.values.series[0].split('!')[0].replace("'", "")
# 替换为新的sheet名
series.values.series[0] = series.values.series[0].replace(sheetname, target_ws_name)
# 保存工作簿
wb2.save(target_file)
```
注意:上述代码仅适用于单个sheet中包含一个或多个图表的情况。如果在一个工作簿中有多个sheet,每个sheet中都包含一个或多个图表,那么需要对每个sheet进行遍历并更新其中的图表。
阅读全文