日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python 實現兩個excel表格數據的對比

作者:夸父追夢@ 更新時間: 2022-05-06 編程語言

1.需求分析:

1.對比兩個excel表格中相同列的數據,表格A,表格B

2.A--表格有gbid(20位數字),name-設備名字

3.B--表格有gbid(20位數字),name-設備名字也有類似的位置信息

要求:

1.找出表格a與表格b中相同的數據【判斷依據是gbid,如果gbid相同就是認為是一個數據】

2.找出表格a中有的數據,但是表格b中沒有的數據【判斷依據是gbid,如果gbid相同就是認為是一個數據】

3.找出表格b中有的數據,但是表格a中沒有的數據【判斷依據是gbid,如果gbid相同就是認為是一個數據】
————————————————
?


2.設計思路:

實現的部分代碼:

1.把一個表格A中的數據讀入到一個全局的list列表中

2.然后讀另外一個表格B一行行讀,讀取后就是與列表進行對比[gbid的對比]

3.如果B中的數據在A中【列表中】存在,就是在B的excel表格中第16列標記為數字1,同時背景色為紅色,以及打印出“紅色的id信息”

4.最終保存表格B的數據以及第16列狀態信息

5.通過表格b中的16列狀態就是可以知道,b表格中哪些數據在A中有,哪些沒有


?

#程序思路  1.讀入我方從導出的所有地市的數據表格sheet-->data
#   2.讀入對方數據治理的導出的數據的,sheet為“ck”
# 3.導入所有數據的國標id到一個gloablist=[]這里,導出完畢后檢索
# 4.循壞對方表中的國標ID那列,判斷每個id是否在“gloablist=["這里,在這里就是在對方檢索表的16列添加數字1,否則添加0
# ------
# 優化版本,優化存入數據到本地json格式,軟件啟動后直接讀取到內存為列表形式,然后在對對比
# gbid--->list

#優化輸入表格輸入名稱錯誤的問題,簡單優化下

?

?3.使用數據幫助說明:

 前提:兩個表格,表格1是:工作簿是data  表格2工作簿是ck;
    1.導入網力excel表格數據,重點關注第六列數據是否是國標編號【31010100581394000030】20位編碼;
    同時表格的工作簿一定要是“data"
    2.數據檢測表格,重點關注第一列【待檢測的編號】,以及第16列【數據寫入狀態1,0】
    同時表格的工作簿一定要是“ck"
    3.運行“數據檢測”稍等一會就是在當前目錄下生成“Dest_”開頭的文件,關注第16列有1的就是說明有這個數據,0的就是沒有這個數據

?

前提:兩個表格,表格1是:工作簿是data  表格2工作簿是ck;
1.導入網力excel表格數據,重點關注第六列數據是否是國標編號【31010100581394000030】20位編碼;
同時表格的工作簿一定要是“data"
2.數據檢測表格,重點關注第一列【待檢測的編號】,以及第16列【數據寫入狀態1,0】
同時表格的工作簿一定要是“ck"
3.運行“數據檢測”稍等一會就是在當前目錄下生成“Dest_”開頭的文件,關注第16列有1的就是說明有這個數據,0的就是沒有這個數據


4. 核心代碼:

啟動時候檢測是否有db.json文件,如果有就是加載進入系統

db.json----->為導入表格的id信息的

    if os.path.exists("db.json"):

        print("db.json數據加載中....")

        # 啟動程序后就是把json文件內容整體讀取到gloablist列表中,用于檢索數據
        with open("db.json","r",encoding="utf8")as fr:
            gloablist=json.load(fr)


        print("數據加載完畢!")

5.入庫的核心代碼:

def impotdatalib():
    gloablist = []
    pvg10 = input("pvg數據導出的gbid表格入庫:")
    pvg10 = pvg10.strip()
    if (not pvg10.endswith("xlsx")):
        pvg10 = (pvg10 + ".xlsx")
    print("生成入庫索引文件,請等待...")

    wb = load_workbook(pvg10)
    sheet = wb["data"]   #單元薄必須是“data"
    max_row = sheet.max_row+1
    print("導入數據rows:",max_row)
    max_column = sheet.max_column+1
    print("導入數據columns:",max_column)

    for i in range(1, max_row):
        for j in range(1, max_column):
            if (j == 6):  # device id 31010100581994000030  -->20設備id
                gbid=sheet.cell(row=i, column=6).value
                gloablist.append(gbid)
    print("入庫數據總量為:",len(gloablist))

    with open("db.json","w",encoding="utf8") as fjson:
        json.dump(gloablist,fjson,ensure_ascii=False)   #ensure_ascii=False  避免中文亂碼

原文鏈接:https://blog.csdn.net/wtt234/article/details/124472790

欄目分類
最近更新