当前位置: 首页 > news >正文

openpyxl -- Cell

文章目录

  • 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_cellsfor i in t:# i 为 MergedCellRangefor r in range(i.max_row - i.min_row + 1):start_row, start_col = i.start_cell.row, i.start_cell.columncur_row = start_row + rfor c in range(i.max_col - i.min_col + 1):cur_col = start_col + ccell = ws.cell(cur_row, cur_col)print(cur_row, cur_col, cell, cell.value)

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


http://www.mrgr.cn/news/49575.html

相关文章:

  • 中国中铁下属设计院盘点
  • Base16编码解码在线工具
  • RabbitMQ 如何保证消息不丢失?
  • VS中创建QT项目。
  • 【环境搭建】更换电脑后的开发环境怎么重建
  • 双目视觉搭配YOLO实现3D测量
  • 【双指针算法】移动零
  • 6.Pytest快速上手
  • 从经济学原理看团队分工合作
  • 动态规划基础与经典问题
  • 微知-BlueField DPU在lspci中显示Flash Recovery是什么意思?
  • 学成在线——关于nacos配置优先级的坑
  • 【Redis】分布式(day12)
  • Java的四种循环语句
  • 论文Idea | 人工智能与建筑的交叉领域探索
  • 通信工程学习:什么是SRAM静态随机存取存储器
  • Leetcode 3315. Construct the Minimum Bitwise Array II
  • 执行powershell脚本出错:未对文件进行数字签名
  • lenovo联想 ThinkPad E14 Gen 2,E15 Gen 2 AMD(20T6,20T7,20T8,20T9)原厂Win10系统镜像下载
  • 2275. 按位与结果大于零的最长组合