IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python EXCEL表格数据对比 -> 正文阅读

[Python知识库]python EXCEL表格数据对比

实现表格数据的对比并且标注

from openpyxl import load_workbook
import os
import time
from psutil import net_if_addrs
import pickle
import  sys
import json
from colorama import init
from colorama import Fore,Back,Style



#程序思路  1.读入我方从p10导出的所有地市的数据表格sheet-->data
#   2.读入数据治理的导出的数据的,sheet为“ck”
# 3.导入所有数据的国标id到一个gloablist=[]这里,导出完毕后检索
# 4.循坏表中的国标ID那列,判断每个id是否在“gloablist=["这里,在这里就是在力源检索表的16列添加数字1,否则添加0
# ------
# 优化版本,优化存入数据到本地json格式,软件启动后直接读取到内存为列表形式,然后在对对比
# gbid--->list

#优化输入表格输入名称错误的问题,简单优化下

gloablist=[]

def impotdatalib():
    gloablist = []
    pvg10 = input("Vvg数据导出的gbid表格入库:")
    pvg10 = pvg10.strip()
    if (not pvg10.endswith("xlsx")):
        pvg10 = (pvg10 + ".xlsx")

    wb = load_workbook(pvg10)
    sheet = wb["data"]
    max_row = sheet.max_row+1
    print(max_row)
    max_column = sheet.max_column+1
    print(max_column)

    for i in range(1, max_row):
        for j in range(1, max_column):
            if (j == 6):  # 设备名称,j是数据源的列信息。    #如果第二列数据与对方的第6列数据进行国标编号的对比,如果相等,就是在检测表的第三列添加数字1,否则0
                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  避免中文乱码


def mtheread():
    sumcount=len(gloablist)   #总数
    errcount=0     #异常数据数量
    stdcount=0     #正常数量

    # 表格try EXCEPTIO变量的初始化变量
    wbdevice=""
    sheetdestdevide=""
    sz3=""



    print("=========欢迎使用EXCEL表格对比内容事项============")



    while True:

        try:

            sz3 = input("请输入数据治理数据表格,表名sheet[ck]:")
            print(Fore.GREEN+"数据正在预处理中,请稍等...")
            print(Fore.GREEN+"======================..")
            sz3=sz3.strip()
            if (not sz3.endswith("xlsx")):
                sz3 = (sz3 + ".xlsx")


            wbdevice = load_workbook(sz3)

            sheetdestdevide = wbdevice["ck"]      #请输入数据治理数据表格de sheet---ck
        except Exception as e:
            print(e,"输入表格名称错误,请重新输入!")
            continue

        # 如果成功就是break跳出循环,继续执行下面的代码
        break



    max_row = sheetdestdevide.max_row+1
    # print(max_row)
    max_column = sheetdestdevide.max_column+1
    # print(max_column)

    for i in range(1,max_row):
        for j in range(1,max_column):

            if(j==1):   #设备名称,j是数据源的列信息。    #如果第二列数据与对方的第6列数据进行国标编号的对比,如果相等,就是在检测表的第三列添加数字1,否则0
                checkvalue=sheetdestdevide.cell(row=i, column=j).value
                # print(checkvalue,"qian")
                checkvalue=checkvalue.strip()
                # print(checkvalue,"国标ID检测中...")
                # if  sheetdestdevide.cell(row=i,column=j).value==sheet.cell(row=i,column=6).value:
                if  checkvalue in gloablist:


                    stdcount=stdcount+1

                    # print("i行%d,j列%d"%(i,j))
                    sheetdestdevide.cell(row=i, column=16).value=1
                    # print("第三列的成绩:",sheetdestdevide.cell(row=i, column=3).value)
                    print(Fore.GREEN+checkvalue+" "+"GBID CHECK....")

                else:
                    sheetdestdevide.cell(row=i, column=16).value = 0

                    errcount=errcount+1
                    print(Fore.RED+checkvalue+" "+"GBIDCHECK....")



    # print(f"本次检测总数是{sumcount},标准国标id数据数量是{stdcount},需要关注的国标id数量是{errcount};")
    print(Fore.RED+"正在生成数据中,请稍等。。。")

    # 保存文件名称
    newSave="Dest_{}".format(sz3)
    # wbdevice.save("./newdest.xlsx")     #保存数据
    wbdevice.save(newSave)     #保存数据
    print("{}数据已经生成,请去目录中查询!".format(newSave))
    print(f"本次检测检测库总数是{sumcount},检测总数据量为{stdcount+errcount};标准国标id数据数量是{stdcount},需要关注的国标id数量是{errcount};")

    print(time.sleep(1))

def fludb():
    sm="""

# ------
# 优化版本,优化存入数据到本地json格式,软件启动后直接读取到内存为列表形式,然后在对对比
# gbid--->list

    
    """
    print(sm)

def dydata():
    print(gloablist[:10])


# 函数字典,对上上面的函数,函数引用的调用,不是函数值的调用。
func_dic = {
    '1':impotdatalib,
    '2':mtheread,
    '3':fludb,
    '4':dydata,


}


if __name__ == '__main__':
    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("数据加载完毕!")


    while True:
        print('''
            ===两个excel表格数据对比,对比方式GBID===
            ===========功能列表===========
            1.写入数据并且配置,必须先入库
            [如果程序目录下有DB.JSON文件,已经入库,不用再入库!]
            2.数据检测
            3.使用说明
            4.打印列表前10条数据
         
            ===========2022-3-3=======
             ''')
        choice = input('请输入功能编号:').strip()
        if choice not in func_dic:
            print("输入正确的编号:")
            continue

        func_dic.get(choice)()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:58:23  更:2022-03-06 12:58:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:41:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码