You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python Excel合并脚本 打包为exe后可在任意存放目录运行

修改方案

所有硬编码的固定路径将替换为exe运行时所在的当前工作目录,同时新增Excel文件过滤逻辑,避免读取非Excel格式文件导致报错,你不需要额外引入新的依赖库。

  • 打包命令使用pyinstaller -F 你的脚本文件名.py即可生成单EXE文件,同事仅需要把EXE放到需要合并的Excel所在的文件夹,双击运行就会自动处理
  • 最终合并生成的gravacaoRodConsolidado.xlsx文件也会保存在当前文件夹内

修改后的完整代码如下:

import os
import pandas as pd

appended_rods = []
# 获取当前exe/脚本运行时所在的工作目录
current_dir = os.getcwd()

# 遍历当前目录下的所有文件,仅筛选Excel文件
for relatorio in os.listdir(current_dir):
    # 跳过非Excel文件、以及最终生成的合并文件,避免重复读取
    if not (relatorio.endswith('.xlsx') or relatorio.endswith('.xls')) or relatorio == 'gravacaoRodConsolidado.xlsx':
        continue

    rod_merged = pd.read_excel(relatorio, header = [0])
    extract_state = str(rod_merged.iloc[[],[0]])
    start = extract_state.find("/") + len("/")
    end = extract_state.find(" e suas")
    state = extract_state[start:end]

    extract_period = str(rod_merged.iloc[[],[0]])
    start = extract_period.find("De: ") + len("De: ")
    end = extract_period.find("21.")
    period = extract_period[start:end]+"21"

    rod = pd.read_excel(relatorio, header =[1])
    rod["Regional"] = state
    rod["Período"] = period
   
    appended_rods.append(rod)
reformatedDataSheet = pd.concat(appended_rods, ignore_index=True)
relatorio = reformatedDataSheet.filter(items=['Origem / ROD', 'Categoria / ROD','Item / ROD','Quantidade','Unidade', 'Regional', 'Período'])

# 合并结果直接输出到当前目录
relatorio.to_excel(os.path.join(current_dir, 'gravacaoRodConsolidado.xlsx'), index = False)

如果你需要给同事更明确的运行提示,可以在获取current_dir后新增一行代码print(f"正在处理目录:{current_dir} 下的Excel文件,处理完成后结果将保存在该目录下"),运行EXE时会弹出提示框显示对应信息。

内容的提问来源于stack exchange,提问作者Madronos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 22:54:03