Python3 Openpyxl将表格中多个图表只修改引用数据源工作名修改为当前工作名
时间: 2023-12-03 10:46:18 浏览: 32
要将表格中多个图表的数据源工作名修改为当前工作名,可以使用openpyxl模块中的`chartsheet.Chartsheet`类和`chart.reference`属性来实现。具体步骤如下:
1. 打开Excel文件并加载工作簿和图表。
```python
import openpyxl
# 打开Excel文件并加载工作簿和图表
wb = openpyxl.load_workbook('example.xlsx')
ws = wb.active
charts = ws._charts
```
2. 遍历所有图表,并将其数据源工作名修改为当前工作名。
```python
# 遍历所有图表,并将其数据源工作名修改为当前工作名
for chart in charts:
chart.chart_title.tx.rich.p[0].t = "New Chart Title"
chart.reference = ws['A1:B10']
```
在这个例子中,我们将所有图表的数据源工作名修改为当前工作表中的单元格A1到B10。
3. 保存修改后的Excel文件。
```python
# 保存修改后的Excel文件
wb.save('example_modified.xlsx')
```
完整代码如下:
```python
import openpyxl
# 打开Excel文件并加载工作簿和图表
wb = openpyxl.load_workbook('example.xlsx')
ws = wb.active
charts = ws._charts
# 遍历所有图表,并将其数据源工作名修改为当前工作名
for chart in charts:
chart.chart_title.tx.rich.p[0].t = "New Chart Title"
chart.reference = ws['A1:B10']
# 保存修改后的Excel文件
wb.save('example_modified.xlsx')
```
注意:在修改图表数据源工作名时,需要确保新的数据源范围与原始数据源范围大小相同。如果新的数据源范围大小不同,可能会导致图表显示异常。