首頁 > 軟體

利用Python製作本地Excel的查詢與生成的程式問題

2022-06-29 18:03:10

前言

今天教大家利用Python製作本地Excel的查詢與生成的程式

需求

製作一個程式 有一個簡單的查詢入口 實現Excel的查詢與生成

實驗步驟

1開啟一個exe 彈出一個介面

2有一個查詢 卡號 點選查詢

3下方展示查詢的結果 同時將這個查詢的結果 追加到一個新的結果Excel檔案裡

4新的結果Excel檔案 格式和原始檔格式相同 但是每次都在最後追加

今天教大家利用Python製作本地Excel的查詢與生成的程式

Excel預覽圖片

1.2 匯入模組並讀取Excel檔案

等會要用的模組有:pandas、os、xlwt和uuid
用import匯入的程式碼:

import pandas, os, xlwt, uuid

匯入好後,就要讀取Excel檔案了。讀取Excel要用到pandas的read_excel函數。

try:
    exl = pandas.read_excel(aim_path)
except:
    print('找不到檔案!請檢查一下檔案路徑或檔案是否存在')
    os._exit(0)

剛剛匯入os模組就是為了做異常捕獲找不到檔案時的退出。

查詢

2.1 Excel的索引與輸入

為了方便後面查詢,要把DataFrame的索引(index)設為查詢輸入的卡號。接著,輸出以卡號為索引的DF,以便使用者查詢。最後,就開始迴圈輸入了。

exl.set_index('卡號', inplace = True)
print(f'{exl}n')
while 1:
    try:
        idx = input('卡號(輸入「退出」即可退出):')
        if idx == '退出':
            os._exit(0)

2.2 開始查詢、豐富程式

查詢用dataframe.loc[index]來完成,最後輸出返回的Series。為了避免使用者輸入非卡號資訊,就又加了異常捕獲。

        res = exl.loc[idx]
        print(f'n{res}n')
    except KeyError:
        print('你的卡號可能輸錯了!我找不到這個卡號的人哦~n')
        continue
    except:
        print('有些錯誤發生了!n')
        continue

追加查詢結果到Excel

3.1 讀取或新建Excel

3.1.1 讀取

讀取跟上面一樣,用read_excel

    try:
        res_exl = pandas.read_excel(res_path)

3.1.2 新建Workbook和Sheet

現在輪到xlwt模組大展身手啦~ 用Workbook函數來新建Workbook;用add_sheet函數新增Sheet

    except:
        workbook = xlwt.Workbook()
        sheet = workbook.add_sheet('new')
        col = 0

3.1.2 寫入Column

在Column的位置,需要填入查詢的Excel的列索引,用

list(pandas.read_excel(aim_path).columns.values)

可以獲取到。然後把列索引以xlwt.write填進去,最後把DF儲存再讀取這個Excel。

for i in list(pandas.read_excel(aim_path).columns.values):
            sheet.write(0, col, i)
            col += 1
        workbook.save(res_path)
        res_exl = pandas.read_excel(res_path)

3.2 追加結果

首先,把結果res變數設定成列表型別。然後,在這個列表裡面新增結果沒有的卡號。最後把這個列表設定成一個Series(索引為查詢的Excel的列索引)。

    res_series_data = list(res)
    res_series_data.insert(2, idx)
    res_series = pandas.Series(
        res_series_data, 
        index = list(
            pandas.read_excel(aim_path).columns.values
        )
    )

現在建好了Series,準備追加了。追加完後還要儲存這個Excel。

    res_exl.loc[str(uuid.uuid1())] = res_series
    try:
        res_exl.to_excel(res_path, index = False)
    except:
        print('寫入失敗')

這裡用了uuid.uuid1來隨機產生索引,避免重複而修改其它人的值。最後幾行就是儲存的操作,python index = False的意思就是把索引隱藏掉了。

完整程式碼

try:
    exl = pandas.read_excel(aim_path)
except:
    print('找不到檔案!請檢查一下檔案路徑或檔案是否存在')
    os._exit(0)
exl.set_index('卡號', inplace = True)
print(f'{exl}n')
while 1:
    try:
        idx = input('卡號(輸入「退出」即可退出):')
        if idx == '退出':
            os._exit(0)
        res = exl.loc[idx]
        print(f'n{res}n')
    except KeyError:
        print('你的卡號可能輸錯了!我找不到這個卡號的人哦~n')
        continue
    except:
        print('有些錯誤發生了!n')
        continue
 
    try:
        res_exl = pandas.read_excel(res_path)
    except:
        workbook = xlwt.Workbook()
        sheet = workbook.add_sheet('new')
        col = 0
        for i in list(pandas.read_excel(aim_path).columns.values):
            sheet.write(0, col, i)
            col += 1
        workbook.save(res_path)
        res_exl = pandas.read_excel(res_path)
    res_series_data = list(res)
    res_series_data.insert(2, idx)
    res_series = pandas.Series(
        res_series_data, 
        index = list(
            pandas.read_excel(aim_path).columns.values
        )
    )
    res_exl.loc[str(uuid.uuid1())] = res_series
    try:
        res_exl.to_excel(res_path, index = False)
    except:
        print('寫入失敗')

到此這篇關於利用Python製作本地Excel的查詢與生成的程式的文章就介紹到這了,更多相關PythonExcel查詢生成的程式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com