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

news/2024/7/21 4:51:28 标签: python, excel, linux

img

1.场景分析

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

2.重难点

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

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

3.问题解决

python">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.niftyadmin.cn/n/5314569.html

相关文章

k8s的集群调度:

k8s的集群调度&#xff1a; Scheduler:负责调度资源&#xff0c;把pod调度到node节点 预算策略 优先策略 list-watch k8s集群当中&#xff0c;通过list-watch的机制进行每个组件的协作&#xff0c;保持数据同步&#xff0c;每个组件之间的解耦 Kubectl配置文件&#xff0c…

Shopee买家通系统助力虾皮买手号轻松获取

Shopee买家通系统可以进行虾皮买手号的全自动注册。这款先进的软件目前覆盖了菲律宾、泰国、马来西亚、越南、巴西、印度尼西亚等多个国家&#xff0c;为用户提供了便捷、高效的注册途径。 想要注册虾皮买家号号&#xff0c;首先需要准备一个支持接收短信的手机号。因为虾皮买家…

请求参数乱码问题

POST请求方式解决乱码问题 在web.xml里面设置编码过滤器 <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!-- 设置过滤器中的属性值 -…

基于Jackson封装的JSON、Properties、XML、YAML 相互转换的通用方法

文章目录 一、概述二、思路三、实现四、测试 一、概述 我们在 yaml转换成JSON、MAP、Properties 通过引入 实现了JSON、Properties、XML、YAML文件的相互转换&#xff0c;具体封装的类、方法如下&#xff1a; 上面的实现&#xff0c;定义了多个类、多个方法&#xff0c;使用…

在学习爬虫前的准备

1. 写一个爬虫程序需要分几步 获取网页内容。 我们会通过代码给一个网站服务器发送请求&#xff0c;它会返回给我们网页上的内容。 在我们平时使用浏览器访问服务器内容是&#xff0c;本质上也是向服务器发送一个请求&#xff0c;然后服务器返回网页上的内容。只不过浏览器还会…

了解不同方式导入导出的速度之快

目录 一、用工具导出导入 Navicat&#xff08;速度慢&#xff09; 1.1、导入&#xff1a; 共耗时&#xff1a; 1.2、导出表 共耗时&#xff1a; 二、用命令语句导出导入 2.1、mysqldump速度快 导出表数据和表结构 共耗时&#xff1a; 只导出表结构 导入 共耗时&…

【大数据进阶第三阶段之DolphinScheduler学习笔记】DolphinScheduler快速上手

1、设置 Dolphinscheduler 在继续之前&#xff0c;您必须先安装并启动 dolphinscheduler。 对于初学者&#xff0c;参考以下博文中的部署起启动服务&#xff1a;【大数据进阶第三阶段之DolphinScheduler学习笔记】深度解析DolphinScheduler(海豚调度)-CSDN博客 2、构建您的第…

[Docker] Mac M1系列芯片上完美运行Docker

docker pull qinchz/dm8-arm64 container_name: dm8ports:- "5236:5236"mem_limit: 1gmemswap_limit: 1gvolumes:- /data/dm8:/home/dmdba/data 数据库实例参数已修改&#xff0c;接近oracle使用习惯 #字符集 utf-8 CHARSET1 #VARCHAR 类型对象的长度以字符为单位 …