欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

程序员文章站 2022-03-30 18:55:33
...

    最近工作用到数据对比处理,Excel用的比较多,奈何自己VBA不够熟悉,复杂一点的功能,做起来挺吃力的,就想起了Python来解决。   将期望功能代码打包成exe文件,在window环境中运行,获得想要的结果。

    本文代码只是模拟excel中VLOOKUP函数为例,具体实践中,可以根据自己需要,修改功能代码。

    1、安装打包所需的pyinstaller: pip install pyinstaller

    2、要实现的VLOOKUP功能代码:

# -!- coding: utf-8 -!-
from openpyxl import load_workbook
import win32api
import win32con


# 读取指定excel
wb = load_workbook("./1_data_location/Source.xlsx")
ws = wb[wb.sheetnames[0]]
rows = ws.max_row
# 遍历目标单元格
for goal_index in range(2, rows + 1):
    goal_cell_value = ws.cell(row=goal_index, column=5).value
    if goal_cell_value is not None:
        # 遍历数据源单元格
        for source_index in range(2, rows + 1):
            source_cell_value = ws.cell(row=source_index, column=1).value
            # 执行区域存在目标数据时
            if goal_cell_value == source_cell_value:
                ws.cell(row=goal_index, column=6).value = ws.cell(row=source_index, column=2).value
wb.save('./1_data_location/Goal.xlsx')
wb.close
print("模拟VLOOKUP函数结束")
##提醒OK消息框
win32api.MessageBox(0, "模拟VLOOKUP函数执行完毕", "提醒", win32con.MB_OK)

3、在项目所在文件夹上按住Shift同时点击鼠标右键,选中“在此处打开Powershell窗口(S)”

python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

    4、在出来的黑窗口中输入:pyinstaller VloopupFunction.py,稍等几分钟,如果报如下错误:

RecursionError: maximum recursion depth exceeded

   原因是python在win中默认递归1000行,此处递归超出了这一限制,所以需要修改递归限制次数。

参考文章:https://*.com/questions/38977929/pyinstaller-creating-exe-runtimeerror-maximum-recursion-depth-exceeded-while-ca

需要继续执行第5点、第6点,如果未报上面错误,则直接看第7步。

5、第四步运行后会生成xxx.spec,在该文件第二行加入:

import sys
sys.setrecursionlimit(1000000)

将递归限制次数最高改为一百万次。

    如下图:

python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

6、在第步出来的黑窗口中执行:pyinstaller  VloopupFunction.spec ,等待执行完毕。

7、在生成的dist目录下的VloopupFunction目录中创建文件夹 1_data_location,并将Source.xlsx复制到该目录下。

python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

8、双击dist目录下的VloopupFunction中的VloopupFunction.exe,则会在1_data_location生成Goal.xlsx。

Source.xlsx为:

python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

Goal.xlsx为:

python实现excel中vlookup函数功能并打包为win环境可执行的exe文件

   已经实现将指区域中存在目标对象找到并获取其对应指功能。