Python操作excel-读取、表格填充颜色区分

news2024/10/6 6:00:23

img

1.场景分析

遇到一个需要读取本地excel数据,处理后打入到数据库的场景,使用java比较重,python很好的解决了这类问题

2.重难点

本场景遇到的重难点在于:

  1. 需要根据表格内的背景颜色对数据进行筛选
  1. 读取非默认Sheet
  1. 总是出现Values must be of type <class ‘str’>问题,后来分析改用cell_fill.start_color.type来判断即可

3.问题解决

from openpyxl import load_workbook
filename = "metadata_comment_dir"  # 读取excel
table="tablename"
workbook = load_workbook(filename)
worksheet = workbook.get_sheet_by_name("SheetName")  # 读取Sheet
#总共有多少行
rows = worksheet.max_row
#总共多少行、多少列并分别赋值
# rows, cols = worksheet.max_row, worksheet.max_column
field_comment = {}
flag =0
for i in range(1, rows+1):
    flag=1
    ce1 = worksheet.cell(row=i, column=1)
    field_comment[table]=worksheet.cell(row=i, column=2).value
    # print(ce1.value)
    if flag==0:
        for j in range(i+2, rows):
            ce2 = worksheet.cell(row=j, column=1)
            if ce2.value != None:
                ce3 = worksheet.cell(row=j, column=3)
                cell_fill=ce2.fill
                # print(ce1.fill.start_color)
                # 值为:rgb=None, indexed=None, auto=None, theme=8, tint=0.8, type='theme'
                if "theme" == cell_fill.start_color.type:
                    # 颜色使用背景颜色
                    cell_color = cell_fill.start_color.theme
                elif "auto" == cell_fill.start_color.type:
                    # 颜色使用自动颜色
                    cell_color = 'Automatic'
                elif "indexed" == cell_fill.start_color.type:
                    # 颜色使用索引颜色
                    cell_color = cell_fill.start_color.indexed
                else  :
                    # 颜色使用rgb颜色
                    cell_color = cell_fill.start_color.rgb
                    field_comment[ce2.value]=ce3.value
                print(field_comment)
            else:
                print(field_comment)
                break
    elif flag==1:
        print(field_comment)
        break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv8改进 | 细节涨点篇 | UNetv2提出的一种SDI多层次特征融合模块(分割高效涨点)

一、本文介绍 本问给大家带来的改进机制是UNetv2提出的一种多层次特征融合模块(SDI)其是一种用于替换Concat操作的模块,SDI模块的主要思想是通过整合编码器生成的层级特征图来增强图像中的语义信息和细节信息。该方法已在多个公开的医学图像分割数据集上进行了验证,包括皮…

全包了 功能超级强大的linux管理平台1panel部署教程

目录 先看下效果 1.1panel是什么 2.安装教程 2.1下载安装包 2.2解压 2.3安装 3.查看 3.1初始化并登录 3.2容器管理页面&#xff0c;可以启动 重启 创建容器 ​编辑 3.3应用商店 意见安装常用应用 ​编辑 3.4可视化任务管理 3.5网站管理 3.6数据库管理 ​编辑 3…

[计算机提升] 管理设备

4.8 管理设备 通过设备管理器可以对设备进行管理&#xff0c;通常的操作包括&#xff1a;禁用设备、启用设备、安装设备和卸载设备。 4.8.1 禁用、启用、卸载设备 1、打开设备管理器&#xff0c;找到要操作的设备&#xff0c;这里以网络适配器(网卡)示例&#xff1a; 2、右…

electron+vue项目使用serialport报错Cannot read property ‘indexOf‘ of undefined解决办法

描述 使用ElectronVue项目时引入serialport串口后启动时报下面错误 Cannot read property indexOf of undefined解决方法 打开vue.config.js找到pluginOptions -> electronBuilder -> externals添加serialport module.exports {pluginOptions: {electronBuilder: {e…

走迷宫(c语言)

前言&#xff1a; 制作一个迷宫游戏是一个有趣的编程挑战。首先&#xff0c;我们需要设计一个二维数组来表示迷宫的布局&#xff0c;其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来&#xff0c;我们需生成迷宫。在生成迷宫的过程…

MIT_线性代数笔记:第 26 讲 复矩阵;快速傅里叶变换

目录 复向量 Complex vectors复矩阵 Complex matrices傅里叶变换 Fourier transform快速傅里叶变换 Fast Fourier transform 实矩阵也可能有复特征值&#xff0c;因此无法避免在矩阵运算中碰到复数&#xff0c;本讲学习处理复数矩阵和复向量。 最重要的复矩阵是傅里叶矩阵&…

【备战蓝桥杯】——Day1

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-xKn7nmq36s9pgUXR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

9 - 数据分片概述|部署MyCat服务

数据分片概述&#xff5c;部署MyCat服务&#xff5c;测试配置 数据分片概述分库分表分割方式水平分割&#xff08;横向切分&#xff09;垂直分割&#xff08;纵向切分&#xff09; 提供分库分表存储服务软件&#xff08;中间件&#xff09;MyCAT软件分片服务器的工作过程 部署M…

基于电源完整性的一些PCB设计建议

基于电源完整性的一些PCB设计建议 1. 尽量减少电源和地通路之间的环路电感&#xff0c;在相邻的层上分配电源和接地面时&#xff0c;使用尽可能薄的电介质&#xff1b; 2. 通过在平面之间使用尽可能高的介电常数来获得平面之间的最低阻抗&#xff0c;与尽可能薄的介电常数设计…

基于springboot的流浪动物救助管理系统

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1研究背景 随着…

Netty-初探

引言 最近开始学习网络编程这一块&#xff0c;特此总结 直接内存为什么比堆内内存要快&#xff1f; JVM在发送堆内数据给远程时&#xff0c;首先会把这部分数据复制到堆外的一块内存空间&#xff08;防止GC过程中文件引用地址发生变化带来的问题&#xff09;&#xff0c;然后…

陪诊小程序开发|陪诊软件定制|陪诊系统成品功能包含哪些?

陪诊小程序是一种便捷的工具&#xff0c;为用户提供一系列服务和功能&#xff0c;方便患者在就医过程中获得更好的体验和效果。接下来我们将介绍几个主要的陪诊小程序功能。 陪诊小程序开发功能&#xff1a; 一、预约挂号功能。陪诊小程序能够连接用户和医疗机构的系统&#x…

扩散模型微调方法/文献综述

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

SMD NTC Thermistor NTC热敏电阻产品基本参数定义

热敏电阻器&#xff08;Thermistor&#xff09;是一种电阻值对温度极为灵敏的半导体元件&#xff0c;温度系数可分为Positive Temperature Coefficient 正温度系数热敏电阻又称PTC热敏电阻和Negative Temperature Coefficient 负温度系数热敏电阻又称NTC热敏电阻. NTC热敏电…

基于YOLOv8深度学习的苹果叶片病害智能诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

外汇天眼:不仅骗钱还骗感情?小心这类骗子盯上你

什么是外汇“杀猪盘”骗局&#xff1f;通俗一点来说就是骗子利用社交平台或者网站&#xff0c;伪造虚假的人设和故事&#xff0c;然后诱导网友进入虚假的外汇平台进行投资交易。随着现代网络科技的发展&#xff0c;各种交友软件可以说是层出不穷&#xff0c;虽然给人们提供了更…

智慧公厕:引领城市卫生管理新时代

在智慧城市建设中&#xff0c;智慧公厕作为城市环境卫生信息化的重要组成部分&#xff0c;扮演着关键角色。它不仅可以提升城市管理水平&#xff0c;满足人民群众的需求&#xff0c;还能提高公厕使用体验和城市环境卫生水平。如广州中期科技有限公司自主研发的智慧公厕管理系统…

Type Script 安装 NPM 安装

使用终端命令 npm -v 这里需要使用到npm npm node.js安装包自带 去官网 Node.js — Download下载对应版本安装 1.npm config set registry https://registry.npmmirror.com 2.npm install -g typescript error: npm notice npm notice New minor version of npm availab…

SpringBoot+Vue实现对称加密和非对称加密

我们先来了解一下什么是对称加密和非对称加密&#xff0c;以及两者的优缺点 对称加密 使用同一个密钥对消息进行加密解密 优点&#xff1a;加密和解密的速度快&#xff0c;适合于数据量大的加解密 缺点&#xff1a;密钥在网络传输中可能被泄露&#xff0c;因此安全性相对较低…

arcgis javascript api4.x以basetilelayer方式加载天地图web墨卡托(wkid:3857)坐标系

需求&#xff1a; arcgis javascript api4.x以basetilelayer方式加载天地图web墨卡托&#xff08;wkid&#xff1a;3857&#xff09;坐标系 效果图&#xff1a; 代码&#xff1a; 提示&#xff1a; 2个文件放同一个文件夹下 MyCustomTileLayer.js define([exports, "…