如何将Excel模板打包进Python生成的exe可执行文件并通过openpyxl调用填充
解决方案
步骤1:调整项目存储结构
将桌面的Template ZA 50.xlsx文件移动到Python脚本同级目录,建议单独新建assets文件夹存放静态资源,最终目录结构如下:
项目根目录/ ├─ 主运行脚本.py └─ assets/ └─ Template ZA 50.xlsx
步骤2:修改路径读取适配双环境
不要写死本地绝对路径,新增路径适配函数同时兼容开发环境和打包后的exe运行环境,代码修改为:
import openpyxl import sys import os def get_resource_path(relative_path): # PyInstaller打包运行时会自动生成sys._MEIPASS临时解压目录 try: base_path = sys._MEIPASS # 本地开发环境时取脚本所在目录作为根路径 except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) # 调用方法读取内嵌模板 location = get_resource_path("assets/Template ZA 50.xlsx") Temp = openpyxl.load_workbook(location) # 原get_sheet_by_name方法已弃用,推荐直接用下标方式取工作表 cbgsheet = Temp["CBG - 401 vs 501"]
步骤3:执行打包命令嵌入模板
使用PyInstaller打包时通过--add-data参数将模板文件一同打进exe:
- Windows系统打包命令:
pyinstaller -F --add-data "assets/*;assets/" 主运行脚本.py
- macOS/Linux系统打包命令:
pyinstaller -F --add-data "assets/*:assets/" 主运行脚本.py
打包完成后dist目录下生成的exe文件已内置Excel模板,所有用户直接运行即可正常读取模板,无需额外放置本地文件。
注意事项
- 填充完数据后保存时不要直接写入模板路径,建议让用户自定义保存路径或写入exe当前运行目录,避免覆盖内嵌资源
- 如果模板是
.xltx格式的标准Excel模板文件,加载时需加read_only=False参数避免写入报错
内容的提问来源于stack exchange,提问作者ALABAMA25
相关产品推荐
相关产品推荐

