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

    最近工作用到数据对比处理,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)”

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

RecursionError: maximum recursion depth exceeded

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

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

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

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

import sys
sys.setrecursionlimit(1000000)

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

    如下图:

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

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

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

Source.xlsx为:

Goal.xlsx为:

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

   

发布了20 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_41267342/article/details/103319146