用Python实现多Excel工作簿嵌入合并工作簿并支持相对路径超链接
实现带相对路径超链接的合并Excel工作簿
核心思路
通过openpyxl创建合并工作簿,在单元格中添加指向独立工作簿的相对路径超链接,确保压缩分享后,只要解压时保持原文件结构,链接依然可正常跳转。
代码实现
导入依赖模块
from openpyxl import Workbook from openpyxl.utils import get_column_letter from openpyxl.cell.cell import Hyperlink import os
核心逻辑代码
# 定义文件结构:独立工作簿存放目录、合并工作簿名称 sub_workbook_dir = "sub_workbooks" merged_workbook_name = "合并工作簿.xlsx" # 创建合并工作簿及工作表 merged_wb = Workbook() index_ws = merged_wb.active index_ws.title = "工作簿索引" # 写入表头 index_ws["A1"] = "序号" index_ws["B1"] = "工作簿名称" index_ws["C1"] = "打开链接" # 遍历子目录中的Excel文件,生成超链接 excel_files = [f for f in os.listdir(sub_workbook_dir) if f.lower().endswith((".xlsx", ".xls"))] for row_num, file_name in enumerate(excel_files, start=2): # 填充序号和文件名 index_ws[f"A{row_num}"] = row_num - 1 index_ws[f"B{row_num}"] = file_name # 构建跨平台相对路径(统一用斜杠) relative_path = os.path.join(sub_workbook_dir, file_name).replace("\\", "/") link_cell = index_ws[f"C{row_num}"] # 设置单元格显示文本和超链接 link_cell.value = "点击打开" link_cell.hyperlink = Hyperlink(ref=link_cell.coordinate, target=relative_path, display="点击打开") # 应用超链接样式(模拟手动添加的视觉效果) link_cell.style = "Hyperlink" # 调整列宽优化显示 for col_idx in range(1, 4): index_ws.column_dimensions[get_column_letter(col_idx)].width = 18 # 保存合并工作簿 merged_wb.save(merged_workbook_name)
关键注意事项
- 路径兼容性:用
os.path.join生成路径后替换为斜杠,避免Windows系统反斜杠导致的链接失效问题 - 文件结构维护:分享时必须将合并工作簿与
sub_workbooks文件夹一起压缩,解压后不要修改层级结构 - 样式优化:应用
Hyperlink样式让单元格显示为蓝色下划线,符合用户对可点击链接的认知 - 文件过滤:仅筛选Excel格式文件,避免无关文件被误加入索引
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

