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