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,使用pandas如何更新表格里包含图表的引用数据源中数据系列涉及到的sheet名,更新并输出代码
时间: 2023-12-10 16:39:36 浏览: 92
可以使用 Pandas 中的 `read_excel` 方法读取表格,然后使用 `to_excel` 方法输出修改后的表格。在 `read_excel` 方法中,可以通过 `sheet_name` 参数指定要读取的工作表名称。在 `to_excel` 方法中,可以通过 `sheet_name` 参数指定要输出的工作表名称。
为了更新包含图表的引用数据源中的数据系列涉及到的工作表名称,可以使用正则表达式和字符串替换来完成。具体操作步骤如下:
1. 读取表格文件到 Pandas DataFrame 中。
```
import pandas as pd
df = pd.read_excel(target_file, sheet_name=target_ws_name, engine='openpyxl')
```
2. 使用正则表达式和字符串替换来更新数据系列涉及到的工作表名称。
```
import re
old_sheetname_pattern = re.compile('|'.join(wb2_oldsheetname))
new_sheetname = target_ws_name
for col in df.columns:
for i, cell_value in enumerate(df[col]):
if isinstance(cell_value, str) and old_sheetname_pattern.search(cell_value):
df.at[i, col] = old_sheetname_pattern.sub(new_sheetname, cell_value)
```
3. 将更新后的 DataFrame 输出到表格文件中。
```
df.to_excel(target_file, sheet_name=target_ws_name, index=False)
```
完整代码如下:
```
import pandas as pd
import re
import openpyxl
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
# 读取表格文件到 Pandas DataFrame 中
df = pd.read_excel(target_file, sheet_name=target_ws_name, engine='openpyxl')
# 使用正则表达式和字符串替换来更新数据系列涉及到的工作表名称
old_sheetname_pattern = re.compile('|'.join(wb2_oldsheetname))
new_sheetname = target_ws_name
for col in df.columns:
for i, cell_value in enumerate(df[col]):
if isinstance(cell_value, str) and old_sheetname_pattern.search(cell_value):
df.at[i, col] = old_sheetname_pattern.sub(new_sheetname, cell_value)
# 将更新后的 DataFrame 输出到表格文件中
df.to_excel(target_file, sheet_name=target_ws_name, index=False)
```
阅读全文