openpyxl -- Cell

news2024/11/24 17:49:32

文章目录

  • Cell
  • Cell的属性
  • MergedCell

版本:openpyxl - 3.0.10

Cell

  • 创建一个单元格,并存入数据、样式、注释等;
  • openpyxl.cell.cell.Cell;
  • 获取cell
    • worksheet_obj[“B3”],根据coordinate获取cell; 也可直接赋值写入;
    • worksheet_obj.cell(row_id, col_id),根据行列获取cell; 也可以再传一个值写入;
    • worksheet_obj[“A1”: “C4”],获取二维数组的cell,每行的cell对象组成一个元组;
       

Cell的属性

  • cell.row, 行 id,从1开始;
  • cell.column / col_idx,列 id,从1开始;
  • cell.column_letter,获取列对应的字母,如B
  • cell.coordinate,坐标,如 ‘B5’
  • cell.value / internal_value,单元格中的数据;
  • cell.comment,关联到这个cell的注释
    • 如图在这里插入图片描述

    • 返回一个openpyxl.comments.comments.Comment对象

    • cell.comment.text 获取注释的文本数据;

  • cell.data_type 数据类型
    • n,数值类型,包括整数、浮点数;
    • s,文本类型;
    • d,日期类型;
  • cell.encoding,编码方式
  • cell.hyperlink,单元格内的超链接;
    • 返回openpyxl.worksheet.hyperlink.Hyperlink对象;
    • 可以在excel单元格中添加一个超链接,链向另一个excel文件,如b.xlsx 或者 b.xlsx#jack!B5,#跟worksheet名称,!跟对应的单元格坐标(#…!..必须一起使用);
    • 超链接对象的参数:
      • ref=‘B5’, 所在单元格的坐标;
      • target=“b.xlsx”,链向的文件名
      • location=‘jack!B5’,链向的excel文件的worksheet表及单元格;
      • tooltip=‘这是一个超链接’,鼠标悬浮链接的提示信息;
      • display=‘b.xlsx - jack!B5’,超链接显示为的内容,若不生效,则通过设置cell.value 来显示;
      • id=‘rId1’,超链接的编号;

from openpyxl.worksheet.hyperlink import Hyperlink
cell2 = ws["B6"]
# 设置显示内容
cell2.value = "laufing 设置value"
# 设置超链接
cell2.hyperlink = Hyperlink(
    ref=cell2.coordinate,
    target="b.xlsx",
    location="jack!B5",
    display="laufing 测试display",
    tooltip="这是Lucy的超链接",
    id="rId2") # id 可以不用传入
  • cell.is_date,数据是否为日期类型;
  • cell.offset(rid, cid) ,相对于当前cell偏移行、列后的cell对象;
  • cell.parent,获取单元格所属的worksheet对象;
  • cell.alignment,水平、垂直对齐方式;
    • 返回openpyxl.styles.alignment.Alignment对象;
    • alignment.horizontal,水平对齐方式,如“center”
    • alignment.vertical,垂直对齐方式,如“center”
  • cell.border, 单元格的边框;
    • 返回openpyxl.styles.borders.Border 对象;
    • border.left/right/top/bottom,返回openpyxl.styles.borders.Side对象;
    • side.style & side.color均为None时,无对应边框;均有值时有对应的边框;
# 有对应的边框
# <openpyxl.styles.borders.Side object>
# Parameters:
# style='medium', color=<openpyxl.styles.colors.Color object>
# Parameters:
# rgb='FF00B050', indexed=None, auto=None, theme=None, tint=0.0, type='rgb'

# 无对应的边框
# <openpyxl.styles.borders.Side object>
# Parameters:
# style=None, color=None
  • cell.fill ,单元格的填充色;

    • 返回 openpyxl.styles.fills.PatternFill 对象;
    • p_fill.fgColor.rgb, 如"FF0000FF" 为蓝色(前两个FF忽略);
  • cell.font,字体样式;

    • 返回openpyxl.styles.fonts.Font对象;
    • font.name 使用的字体名称;
    • font.family 使用字体的编号;
    • font.b 是否加粗;
    • font.i 是否倾斜;
    • font.color 字体颜色,返回Color对象;
  • cell.has_style 判断单元格是否有样式,返回True/False;

    • alignment、border、fill、font、protection都是样式;
  • cell.style, 单元格类型(常规、超链接);.style_id为对应的编号;

  • cell.number_format

  • cell.pivotButton

  • cell.protection 单元格是否锁定,避免误操作;

    • 必须先开启工作表保护(开始-格式-工作表保护),再设置单元格的格式(右键),勾选锁定,才会锁定该单元格(禁止编辑);

    • 如图:在这里插入图片描述

    • 返回openpyxl.styles.protection.Protection对象;

    • protection.locked 是否为锁定;

    • protection.hidden 是否为隐藏;

 

MergedCell

  • 合并的单元格,openpyxl.cell.cell.MergedCell 类;

  • 合并的单元格的值,只在最左上角的cell中,其他的cell中的值均为None;

  • worksheet.merged_cells,获取所有的合并的单元格;返回openpyxl.worksheet.cell_range.MultiCellRange的可迭代对象;

  • 遍历MultiCellRange对象得到openpyxl.worksheet.merge.MergedCellRange对象,属性如下:

    • i.bottom # 合并区域的最下面一行cell的(rid, cid),同样有left 最左边一列,right最右边一列,top最上边一行的cell;
    • i.bounds # 左上角、右下角cell的(cid, rid)
    • i.cells 所有的单元格,可以逐一遍历
    • i.rows 所有的行可迭代对象
    • i.cols 所有的列
    • i.coord 起始:结束范围
    • i.min_row/max_row/min_col/max_col;
    • i.start_cell 左上角的起始cell;
    • i.size 整体大小,行数&列数;
    • i.ws 获取worksheet对象;
  • 案例,输出合并单元格区域的所有cell;


ws = wb_a["sheet"]
# MultiCellRange
t = ws.merged_cells

for i in t:
    # i 为 MergedCellRange
    for r in range(i.max_row - i.min_row + 1):
        start_row, start_col = i.start_cell.row, i.start_cell.column
        cur_row = start_row + r
        for c in range(i.max_col - i.min_col + 1):
            cur_col = start_col + c
            cell = ws.cell(cur_row, cur_col)
            print(cur_row, cur_col, cell, cell.value)

在这里插入图片描述
可以看到,合并的单元格中只有起始的单元格value有值,其他均为None;

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

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

相关文章

查找学位论文的数据库有哪些

学位论文分类&#xff1a;一般分为学士论文、硕士论文、博士论文。下面介绍一下能够轻松获取学位论文全文的数据库及获取数据库资源的途径。 1.知网 中国优秀硕士学位论文全文数据库 &#xff08;中国知网CNKI&#xff09; 中国博士学位论文全文数据库 &#xff08;中国知网…

获取时隔半个钟的三天与el-time-select

摘要&#xff1a; 今天遇到需求是配送时间&#xff0c;时隔半个钟的排线&#xff01;所以需要拼接时间&#xff01;例如2024-10-08 14&#xff1a;30&#xff0c;2024-10-08 15&#xff1a;00&#xff0c;2024-10-08 15&#xff1a;30 <el-form-item label"配送时间&a…

Cyber Weekly #28

赛博新闻 1、特斯拉发布无人驾驶汽车Cybercab和Robovan 本周五&#xff08;10月11日&#xff09;&#xff0c;特斯拉公布两款车型Cybercab和Robovan&#xff0c;以及他们的Robotaxi无人驾驶出租车计划。Cybercab没有方向盘&#xff0c;没有充电孔&#xff0c;也没有脚踏板和后…

动态规划的优化与高级应用

姊妹篇&#xff1a; 动态规划基础与经典问题-CSDN博客 贪心算法&#xff1a;原理、应用与优化_最优解-CSDN博客​​​​​​贪心算法&#xff1a;原理、应用与优化_最优解-CSDN博客 一、动态规划的优化策 动态规划在提高时间效率的同时&#xff0c;往往会占用较多的空间。因…

【电商搜索】现代工业级电商搜索技术-中科大-利用半监督学习改进非点击样本的转化率预测

【电商搜索】现代工业级电商搜索技术-中科大-利用半监督学习改进非点击样本的转化率预测 0. 论文信息 RecSys24: Utilizing Non-click Samples via Semi-supervised Learning for Conversion Rate Prediction inproceedings{huang2024utilizing, title{Utilizing Non-click S…

微生物测序报告中的多样性数据详细解读

随着技术的发展&#xff0c;高通量测序技术已成为研究微生物群落的重要工具。这种技术使得科学家们能够解析巨量微生物DNA序列&#xff0c;从而获得丰富的微生物组数据&#xff0c;包括16S rRNA基因、ITS序列和宏基因组。然而&#xff0c;这些数据只是迈向揭示微生物群落复杂性…

docker启动MySQL容器失败原因排查记录

背景 最近在尝试容器搭建MySQL集群时碰到一个错误&#xff0c;启动MySQL时碰到一个&#xff0c;经过排查解决&#xff0c;在此做一个记录 问题过程 1、启动MySQL容器 $ sudo docker run -d -p 3306:3306 \ > --name mysql \ > -v /opt/mysql/log:/var/log/mysql \ &g…

java项目之大型商场应急预案管理系统(源码+文档)

项目简介 大型商场应急预案管理系统实现了以下功能&#xff1a; 大型商场应急预案管理系统的主要使用者管理员功能有个人中心&#xff0c;员工管理&#xff0c;预案信息管理&#xff0c;预案类型管理&#xff0c;事件类型管理&#xff0c;预案类型统计管理&#xff0c;事件类…

【vue】03-指令补充+样式绑定+计算属性+侦听器

代码获取 知识总结 ⼀、指令补充 1.指令修饰符 1.1 什么是指令修饰符&#xff1f; 所谓指令修饰符就是让指令的 功能更强⼤&#xff0c;书写更便捷 1.2 分类 1.2.1 按键修饰符 keydown.enter&#xff1a;当enter键按下时触发 keyup.enter&#xff1a;当enter键抬起时触…

执行powershell脚本出错:未对文件进行数字签名

解决执行powershell脚本时出错&#xff1a;未对文件 \test.ps1进行数字签名。无法在当前系统上运行该脚本 前言 今天从github上下载了一个PowerShell脚本要在本地运行&#xff0c;运行的时候出现了未对文件进行数字签名的问题&#xff0c;然后在这里记录下怎么解决 解决方法…

选择2024年开发App的理由,费用分析与效益

App开发费用受复杂度、团队、地理位置、平台等因素影响。低代码平台如ZohoCreator提供经济高效开发方案&#xff0c;降低费用并提升灵活性。2024年&#xff0c;企业需考虑这些因素制定长期规划。 调查显示&#xff1a; 企业估算应用开发费用时&#xff0c;常采用以下公式&…

大厂面试真题-组合和聚合的区别是什么

组合和聚合比较类似&#xff0c;二者都表示整体和部分之间的关系。 聚合关系的特点是&#xff1a;整体由部分构成&#xff0c;但是整体和部分之间并不是强依赖的关系&#xff0c;而是弱依 赖的关系&#xff0c;也就是说&#xff0c;即使整体不存在了&#xff0c;部分仍然存在…

算法专题六: 模拟与分治快排

目录 模拟1. 替换所有的问号2. 提莫攻击3. Z字形变换4. 外观数列5. 数青蛙分治快排1. 颜色分类2. 排序数组3. 数组中的第K个最大元素4. 库存管理Ⅲ 模拟 1. 替换所有的问号 算法思路: 本题就是简单的模拟, 只需按照题目的思路遍历所有的字符, 如果为?则将其替换, 替换时寻找2…

今日指数项目day8实战权限管理器(上)

3.权限管理器 3.1 权限列表展示功能 1&#xff09;原型效果 2&#xff09;接口说明 功能描述&#xff1a; 查询所有权限集合 服务路径&#xff1a; /api/permissions 服务方法&#xff1a;Get 请求参数&#xff1a;无响应数据格式: {"code": 1,"data":…

Python自然语言处理之pyltp模块介绍、安装与常见操作案例

pyltp是哈尔滨工业大学社会计算与信息检索研究中心推出的一款基于Python封装的自然语言处理工具&#xff0c;它提供了哈工大LTP&#xff08;Language Technology Platform&#xff09;工具包的接口。LTP工具包以其强大的中文分词、词性标注、命名实体识别、依存句法分析等功能&…

Idea不能创建java8切换路径

顶部的Server URL改成https://start.aliyun.com/

Ubuntu配置应用开机自启动

有些自己下载的应用想要配置开机自启动&#xff0c;比如snipaste&#xff0c;steam等&#xff0c;可以通过一下步骤进行配置 点击应用展开图标 这个里面就是开机自启动的一些应用&#xff0c;可以将自己想要自启动的应用添加到这个里面来 以上是snipaste配置&#xff0c;起…

大数据治理:构建数据驱动的智能决策体系

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

RocketMq详解:三、RocketMq通用生产和消费方法改造

文章目录 1.背景2.通用方法改造2.1添加maven依赖2.2 RocketMq基础配置2.3 配置类2.5 消息传输的对象和结果2.4 消息生产者2.5 消息消费者2.6 功能测试 1.背景 在第二章&#xff1a;《RocketMq详解&#xff1a;二、SpringBoot集成RocketMq》中我们已经实现了消费基本生产和消费…