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  避免中文乱码

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐