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爲:

   已經實現將指區域中存在目標對象找到並獲取其對應指功能。

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章