Python Openpyxl excel 根据已有规则填充excel

2023-11-07

ps:
空单元格可以用如下进行判断

 str_reason = excel_set.get_cell_value( i+1, 6)      
  if (str_reason != None): 

规则模板
在这里插入图片描述
需要填充的excel (M列 N列)。 这个excel有上千列,如果一个一个粘的话…
在这里插入图片描述

import json
import requests
import openpyxl
import os
import ssl
import sys
import time

class ExcelOp(object):
    def __init__(self, file):
        self.file = file
        self.wb = openpyxl.load_workbook(self.file)
        sheets = self.wb.sheetnames
        self.sheet = sheets[0]
        self.ws = self.wb[self.sheet]

    def set_sheets(self,num):
        sheets = self.wb.sheetnames
        if(num < len(sheets)):
            self.sheet = sheets[num]
            self.ws = self.wb[self.sheet]
        else:
            print("the sheet num is out range ,MAX:%d"%(len(sheets)))
    def get_sheet_name(self):
        return self.ws.title
		
    # 获取表格的总行数和总列数
    def get_row_clo_num(self):
        rows = self.ws.max_row
        columns = self.ws.max_column
        return rows, columns

    # 获取某个单元格的值
    def get_cell_value(self, row, column):
        cell_value = self.ws.cell(row=row, column=column).value
        return cell_value

    # 获取某列的所有值
    def get_col_value(self, column):
        rows = self.ws.max_row
        column_data = []
        for i in range(1, rows + 1):
            cell_value = self.ws.cell(row=i, column=column).value
            column_data.append(cell_value)
        return column_data

    # 获取某行所有值
    def get_row_value(self, row):
        columns = self.ws.max_column
        row_data = []
        for i in range(1, columns + 1):
            cell_value = self.ws.cell(row=row, column=i).value
            row_data.append(cell_value)
        return row_data

    # 设置某个单元格的值
    def set_cell_value(self, row, colunm, cellvalue):
        try:
            self.ws.cell(row=row, column=colunm).value = cellvalue
            self.wb.save(self.file)
        except:
            self.ws.cell(row=row, column=colunm).value = "writefail"
            self.wb.save(self.file)
			
answer_list_youwu = []
answer_list_reason = []
answer_list_error = []

a = 0
if __name__ == "__main__":
    excel_ori= ExcelOp(file="template.xlsx")
   
     
    max_row,max_column = excel_ori.get_row_clo_num()
    #get the template list
    for j in range(max_row):
        str_ifnot = excel_ori.get_cell_value( j+1, 2)
        if(str_ifnot == 1):
            answer_list_youwu.append(excel_ori.get_cell_value( j+1, 3))
            answer_list_reason.append(excel_ori.get_cell_value( j+1, 4)) 
            str_reason = excel_ori.get_cell_value( j+1, 5)
            str_temp = str_reason[0:70]
            answer_list_error.append(str_temp) 
            #print("num :%d is exist  str_ifnot:%s "%(j,str_ifnot))
    
    #set the result to target excel
    excel_set= ExcelOp(file="20200508_Checkシート_2_0511test.xlsx")
    excel_set.set_sheets(7)
    max_row,max_column = excel_set.get_row_clo_num()
    print("max_row:%d max_column:%d"%(max_row,max_column))
    for i in range(max_row):
        str_reason = excel_set.get_cell_value( i+1, 14)
		
       

        #check the frame reason  if empty
        if (len(str(str_reason))<5): 
            sys.stdout.write("check sheet:%s  line:%d"%(excel_set.get_sheet_name(),i)+'\r')
            sys.stdout.flush()
            str_err_full = excel_set.get_cell_value( i+1, 15)
            str_temp = str_err_full[0:70]
            try:
                num_list = answer_list_error.index(str_temp)
            except ValueError:
                a = a+1
                #print("cant find it in template")
            else:
                #print("find it in template")
                excel_set.set_cell_value(i+1,13,answer_list_youwu[num_list])
                excel_set.set_cell_value(i+1,14,answer_list_reason[num_list])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Openpyxl excel 根据已有规则填充excel 的相关文章

  • 全程 AIGC 游戏创作,2小时开发微信小游戏!(完整ChatGPT调教流程)

    给 AI 打工 2小时开发一款3D小游戏可行么 源码下载地址见文末 最近 科技发展是日新月异 如果说 Stable Diffusion 和 Mid Journey 只是卷死了美术 我们还在庆幸研发不能被替代 那么 3 月份出来的 GPT4
  • react-router-dom的基本使用

    React Router Dom 1 React Router react router是一个核心库 我们在做PC端时要用react router dom 而在移动端我们要用React Router Native 2 React Route
  • 无极超分辨率

    文章目录 前言 一 Meta SR 1 1 Meta SR A Magnification Arbitrary Network for Super Resolution 1 2 Location Projection 1 3 Weight
  • Android Update Engine 分析(二十一)Android A/B 更新过程

    0 背景 早期 Android A B 系统升级在 Android 7 1 版本推出时 参考文档十分有限 也就是 Android 官方大概有两三个页面介绍文档 我的第一篇 A B 系统分析文章 Android A B System OTA分
  • php使用ecc算法进行签名,ECDSA签名算法(ECC椭圆曲线算法3)

    现在有一个场景 Alice想要用私钥签名一个数据 Bob想要使用Alice的公钥验证这个签名 只有Alice能够进行计算签名然后得到签名 每个人都能验证签名值 首先Alice和Bob拥有相同的椭圆曲线参数 算法被签名称之为ECDSA 是DS
  • 关于OpenGL纹理尺寸的坑 - 图像行偏移,出现异色条纹

    学习OpenGL时想简单创建一个纹理 但马上就出现错误 错误效果如下 原图如下 由于之前没有碰过这种问题 费了好大一番功夫才找到问题所在 原始图片尺寸为210 220 OpenGL版本与教程一致 为3 3 把像素值打印出来观察之后发现 传入
  • Spring 特性

    目录 核心特性 数据存储 Web 技术 Web Servlet 技术栈 Spring 1 4的唯一支持 Web Reactive 技术栈 Spring 5引入 技术整合 Integration 测试 Testing Spring 模块化设计
  • DeformableDetr论文简介+mmdet源码解读

    文章目录 前言 一 论文解读 1 1 研究问题 1 2 可形变注意力模块 1 3 拓展到多层特征图 二 mmdet源码讲解 2 1 图像特征提取 2 2 生成mask和位置编码 2 3 送入Transformer 2 3 1 Transfo
  • 机器学习之朴树贝叶斯②——调库实现

    文章目录 多项式朴素贝叶斯 MultinomialNB 高斯朴素贝叶斯 GaussianNB 多项式朴素贝叶斯 MultinomialNB sklearn naive bayes MultinomialNB alpha 1 0 fit pr
  • 为什么HashMap线程不安全?

    我们都知道 HashMap 是线程不安全的 那 HashMap 为什么线程不安全 JDK1 8 还有这些问题吗 如何解决这些问题呢 本文将对该问题进行解密 多线程下扩容死循环 JDK1 7中的 HashMap 使用头插法插入元素 在多线程的
  • 如何在深度学习中处理图像数据?

    深度学习在图像处理领域取得了重大的突破 可以用于图像分类 目标检测 图像生成等各种任务 处理图像数据的关键是将图像转换为适合深度学习模型处理的形式 下面是处理图像数据的一般步骤 1 数据准备 收集和整理用于训练的图像数据集 数据集应包含图像
  • MySQL基础篇——第10章 DDL(数据定义):创建和管理表

    MySQL基础篇 第10章 DDL 数据定义 创建和管理表 1 基础知识 1 1 一条数据存储的过程 存储数据是处理数据的第一步 只有正确地把数据存储起来 我们才能进行有效的处理和分析 MySQ的数据存储过程 创建数据库 确认字段 创建数据
  • 基于Matlab实现图像目标边界描述

    图像目标边界描述是图像处理中的一个重要问题 边界描述可以用于目标检测和识别 图像分割等应用 Matlab提供了强大的图像处理工具箱 可以方便地实现图像目标边界描述 本文介绍一种基于边缘检测的图像目标边界描述方法 并提供一个简单的案例源码 文
  • 自定义Webpack配置

    自定义Webpack配置 1 初始化并创建要被打包的文件 2 命令行配置 3 配置文件配置 1 初始化并创建要被打包的文件 首先创建文件夹webpack demo 随便起一个 用来演示打包过程 在该文件夹下终端运行命令 对项目进行初始化操作
  • java静态编译 动态编译_Java代码的静态编译和动态编译中的问题比较

    两种技术都需要谨慎选择编译的方法以实现最高的性能 对动态编译器而言 编译器自身作出决策 而对于静态编译器 由开发人员作出选择 让 JIT 编译器选择编译的方法是不是优点很难说 取决于编译器在给定情形中推断能力的好坏 在大多数情况下 我们认为
  • Nvidia 显卡 Failed to initialize NVML Driver/library version mismatch 错误解决方案

    目录 问题复现 问题原因 问题分析 解决方案 问题复现 nvidia smi gt Failed to initialize NVML Driver library version mismatch 问题原因 出现这个问题的原因是nvidi
  • Windows修改java环境变量不生效

    Windows修改java环境变量不生效 1 运行 regedit 2 HKEY LOCAL MACHINE SOFTWARE JavaSof t Java Runtime Environment 3 删除不需要的
  • Qt中Q_D宏及d指针

    原文标题 d指针在Qt上的应用及实现 原文链接 http blog csdn net rabinsong article details 9474859 正文 Qt为了使其动态库最大程度上实现二进制兼容 引入了d指针的概念 那么为什么d指针
  • 全新服务器安装redis步骤大全

    如安装过程中报错可查看另外一篇文章 https blog csdn net Cjava math article details 108832966 第一步 下载安装包 访问https redis io download 到官网进行下载 这
  • IO进程线程day1(2023.7.25)

    一 Xmind整理 什么是IO 文件IO函数与标准IO函数 二 课上练习 练习1 标准IO函数的简单示例 scanf if OS Linux 去调用Linux的文件IO read else if OS windows 去调用windows的

随机推荐

  • Intel 80X86寄存器分类介绍

    开始读Linux内核相关书籍时 在书店里碰到一个计算机专业科班出身的朋友 向他请教时 他认为学习Linux内核不需要汇编和计算机体系结构等相关的知识 可是结合到现在的学习经历 我却越来越觉得为了搞清楚Linux内核相关设计和运行原理 自己那
  • 使用asp.net从零开始制作设计网站

    使用asp net从零开始制作设计网站 转载 首先感谢提供此教程的朋友 可以给大家学习的机会 很有用 留着好好学 如下正文 1 申请域名 2 购买空间 3 备案 4 使用photoshop完成设计与切图 5 使用dreamweaver建立站
  • C++ sizeof 运算符

    sizeof 是一个关键字 它是一个编译时运算符 用于判断变量或数据类型的字节大小 sizeof 运算符可用于获取类 结构 共用体和其他用户自定义数据类型的大小 使用 sizeof 的语法如下 sizeof data type 其中 dat
  • 独立成分分析(Independent Component Analysis)

    独立成分分析 Independent Component Analysis 1 问题 1 上节提到的PCA是一种数据降维的方法 但是只对符合高斯分布的样本点比较有效 那么对于其他分布的样本 有没有主元分解的方法呢 2 经典的鸡尾酒宴会问题
  • 2019年应该如何学习前端开发?

    近两年来 前端开发工程师越来越火了 2019年已经到来了 很多准备入行前端开发工程师的小伙伴们 不知道准备得怎么样了呢 有的朋友在想方设法的学习 争取在年后的金三银四能靠实力找到一份满意的工作 有的小伙伴在准备回家过个团圆年 来年再战 还有
  • Android 巧妙避免倒计时跳转页面时出现的问题

    在Android开发中 当我们实现导航页倒计时跳转时常会出现这样的问题 1 计时器正在倒计时的时候点击跳转按钮 会出现跳两次的状况 这是其一 2 其二 当计时器正在倒计时的时候按返回键 进入桌面后几秒后又进入应用 以下代码解决了这个问题 方
  • Creo文件怎么保存为HTML文件,将Creo装配体的每个部件保存成单独的STP格式

    我们在Creo中将装配体保存成STP格式时 默认是将所有的部件保存到一个STP文件中 如果我们希望将所有的部件保存成单独的STP文件 可进行如下设置 将选项step export format的值设置为ap214 is 此时在导出STP对话
  • python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组 其中包括random 相关的各种方法 都没有得到想要的结果 最后在一篇博客中受到启发 通过列表解析的方法得到随机的二维数组 具体如下
  • eclipse没有server选项解决方法(史上最简单)

    1 2点击install 3输入网址到如下图位置 然后一直点击next即可 http download eclipse org releases kepler 4 Over
  • error LNK2019: 无法解析的外部符号 __imp_UuidCreate,该符号在函数 “public: char const * __cdecl gdcm...被引用

    一般这种情况就是链接库有问题 这个时候需要在代码中引入如下 pragma comment lib Rpcrt4 lib
  • 第05课:CNN 在机器视觉中的应用——图像分类

    从本节课开始 我们将陆续为大家介绍在工业界使用较多的几种神经网络结构 首先介绍的是卷积神经网络 Convolution Neural Network CNN 本节课核心内容包括 卷积神经网络发展历史回顾 卷积与池化 卷积神经网络的应用 图像
  • 线程池简介说明

    转自 http www java265 com JavaCourse 202110 1494 html 下文是笔者讲述线程池的相关简介说明 如下所示 线程池的简介 线程池 Thread Pool 用于规定应用程序中同一时刻可运行的线程数 用
  • 小程序端使用uni.chooseLocation()API报chooseLocation:fail the api need to be declared in the requiredPrivate

    错误 解决方案 在manifest json中把红框圈起来的地方删掉就可以了
  • jquery ajax上传文件到服务器,jquery – 如何在POST上使用Ajax上传文件?

    我知道关于这个主题的主题并没有遗漏 这就是为什么我查看了关于这个主题的大量帖子 找不到令我满意的东西 所以我试图自己构建它 我想要做的就是使用Djaxo使用Ajax上传文件以避免页面刷新 这是我做的 basic upload html cs
  • 【JSP】第一个JSP程序:Hello,JSP

    JSP就是Servlet 如果不会Servlet 就无法理解JSP 通过本文 你将学到如何实现第一个JSP程序 以及JSP程序的实现原理 文章目录 JSP诞生背景 第一个JSP程序 JSP实现原理 执行过程 为什么JSP就是Servlet
  • 如何从DDOS攻击中恢复

    分析攻击 一旦攻击结束 尝试尽可能详细地分析它 您可以从您的安全提供商或您的内部网络和应用程序系统日志中获取大部分此类信息 要问的一些关键问题包括 哪些资产遭到攻击 它是针对您的整个网络 还是针对特定的服务器或服务 攻击特征是什么 是单一的
  • c语言动画原理,动画详解十大经典排序算法(C语言版)

    排序算法是程序员必备的基础知识 弄明白它们的原理和实现很有必要 本文中将通过非常细节的动画展示出算法的原理 配合代码更容易理解 概述 由于待排序的元素数量不同 使得排序过程中涉及的存储器不同 可将排序方法分为两类 一类是内部排序 指的是待排
  • <C语言>文件操作

    1 什么是文件 按照文件的功能来划分 文件可以分为程序文件和数据文件 数据文件 文件的内容不一定是程序 而是程序运行时读写的数据 比如程序运行需要从中读取数据的文件 或者输出内容的文件 程序文件 包括源程序文件 后缀为 c 目标文件 win
  • jquery ui table

    代码 jquery ui sortable 实现table row的拖动 跳至 1 1 2 3 4 5 6 7 8 9 10
  • Python Openpyxl excel 根据已有规则填充excel

    ps 空单元格可以用如下进行判断 str reason excel set get cell value i 1 6 if str reason None 规则模板 需要填充的excel M列 N列 这个excel有上千列 如果一个一个粘的