openpyxl Worksheet

news/2024/11/15 13:40:55/文章来源:https://www.cnblogs.com/wangguishe/p/18194124

worksheet 说明

Worksheet 代表一个 Excel 工作表。

worksheet 初始化

from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

worksheet 属性

title: 返回工作表的标题。max_row: 返回工作表中最大的行数。max_column: 返回工作表中最大的列数。columns: 访问工作表中的所有列。这个属性返回一个生成器,允许迭代每一列以访问其中的单元格。rows: 访问工作表中的所有行。这个属性返回一个生成器,允许迭代每一行以访问其中的单元格。sheet_format:设置工作表的格式,如列宽、行高等。base_col_width: 用于设置基础列宽度。默认值:10。default_row_height: 设置默认行高度。默认值:12.75。row_dimensions: 设置每行行高。column_dimensions: 设置每列列宽。freeze_panes: 用于冻结工作表中的特定行或列,使其在滚动时始终可见。worksheet.freeze_panes = 'A2'  # 冻结第一行worksheet.freeze_panes = 'B1'  # 冻结第一列worksheet.freeze_panes = 'C2'  # 冻结前两列和第一行worksheet.freeze_panes = None  # 取消所有冻结窗格index(worksheet): 用于获取工作表在工作簿中的位置索引。位置索引从0开始,这意味着第一个工作表的索引是0。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 获取工作表的名称
print(type(worksheet.title), worksheet.title)   # 输出: <class 'str'> Sheet# 获取工作表的最大行数
print(type(worksheet.max_row), worksheet.max_row)   # 输出: <class 'int'> 1# 获取工作表的最大列数
print(type(worksheet.max_column), worksheet.max_column) # 输出: <class 'int'> 1# 设置基础列宽度
worksheet.sheet_format.base_col_width = 15# 设置默认行高度
worksheet.sheet_format.default_row_height = 50# 设置第一行的行高为30
worksheet.row_dimensions[1].height = 30# 设置第一列(列A)的列宽为20
worksheet.column_dimensions['A'].width = 20# 设置冻结窗格:冻结第一行
ws.freeze_panes = 'A2'# 设置冻结窗格:冻结第一列
ws.freeze_panes = 'B1'# 设置冻结窗格:冻结第一行和第一列
ws.freeze_panes = 'B2'# 取消冻结窗格
ws.freeze_panes = None  # 取消冻结窗格# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()
from openpyxl import load_workbookworkbook = load_workbook('execl_test.xlsx')worksheet = workbook.worksheets[0]
print(workbook.index(worksheet), worksheet.title)    # 输出: 0 Sheet# 保存工作簿到指定的文件名
workbook.save("execl_test.xlsx")# 关闭工作簿
workbook.close()
from openpyxl import load_workbook# 加载现有的工作簿
wb = load_workbook('example.xlsx')# 获取活动的工作表
ws = wb.active# 遍历并打印每行的值
for row in ws.rows:for cell in row:print(cell.value)# 遍历并打印每列的值
for column in ws.columns:for cell in column:print(cell.value)# 保存工作簿
wb.save('unmerged_cells_example.xlsx')

worksheet 方法

append(rows)

功能: 在工作表末尾附加一行或多行数据。
参数: rows - 要添加的行数据。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 添加一行数据
worksheet.append(['Alice', 30, 'Engineer'])# 多行数据
data = [['Bob', 25, 'Male'],['Charlie', 35, 'Male']
]# 逐行添加数据
for row in data:worksheet.append(row)# 打印工作表中数据
for row in worksheet.iter_rows(values_only=True):print(type(row), row)# 输出: <class 'tuple'> ('Alice', 30, 'Engineer')
# 输出: <class 'tuple'> ('Bob', 25, 'Male')
# 输出: <class 'tuple'> ('Charlie', 35, 'Male')# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

iter_rows()

iter_rows(): 用于迭代工作表中的行,返回每一行的单元格对象。
iter_rows(min_row=1, max_row=None, min_col=1, max_col=None, values_only=False):min_row (可选): 起始行号,默认为1;max_row (可选): 结束行号,默认为工作表中的最大行号;min_col (可选): 起始列号,默认为1;max_col (可选): 结束列号,默认为工作表中的最大列号;values_only (可选): 如果设置为 True,则只返回单元格的值,而不是单元格对象。
返回值: 返回一个生成器,用于迭代工作表中符合条件的行。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 添加一行数据
worksheet.append(['Alice', 30, 'Engineer'])# 遍历工作表的每一行
for row in worksheet.iter_rows(values_only=True):print(type(row), row)
# 输出: <class 'tuple'> ('Alice', 30, 'Engineer')# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

iter_cols 

iter_cols(): 用于迭代工作表中的列,返回每一列的单元格对象。
iter_cols(min_row=1, max_row=None, min_col=1, max_col=None, values_only=False):min_row (可选): 起始行号,默认为1;max_row (可选): 结束行号,默认为工作表中的最大行号;min_col (可选): 起始列号,默认为1;max_col (可选): 结束列号,默认为工作表中的最大列号;values_only (可选): 如果设置为 True,则只返回单元格的值,而不是单元格对象。
返回值: 返回一个生成器,用于迭代工作表中符合条件的行。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 添加一行数据
worksheet.append(['Alice', 30, 'Engineer'])# 遍历工作表的每一列
for cols in worksheet.iter_cols(values_only=True):print(type(cols), cols)
# 输出: <class 'tuple'> ('Alice',)
# 输出: <class 'tuple'> (30,)
# 输出: <class 'tuple'> ('Engineer',)# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

insert_cols()

insert_cols(): 用于插入指定列索引开始的指定数量的列。insert_cols(idx, amount=1):idx: 要插入的列的起始索引。amount: 要插入的列的数量,默认为1。可选。
from openpyxl import Workbook# 创建一个新的 Excel 工作簿
wb = Workbook()
ws = wb.active# 填充示例数据
for row in range(1, 6):ws.append([f'Data {row}{col}' for col in range(1, 6)])# 保存初始的工作簿(可选)
wb.save('before_insert_columns.xlsx')# 在第2列位置插入1列
ws.insert_cols(2, amount=1)# 在第2列位置插入3列
ws.insert_cols(2, amount=3)# 保存工作簿
wb.save('after_insert_columns.xlsx')

delete_cols()

delete_cols(): 用于删除指定列索引开始的指定数量的列。delete_cols(idx, amount=1):idx: 要删除的列的起始索引。amount: 要删除的列的数量,默认为1。可选。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 添加一行数据
worksheet.append(['Alice', 30, 'Engineer', '2024'])# 删除第1列
worksheet.delete_cols(1)# 删除从第2列开始的3列
worksheet.delete_cols(2, 3)# 遍历工作表的每一列
for row in worksheet.iter_rows(values_only=True):print(type(row), row)# 输出: <class 'tuple'> (30,)# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

insert_rows()

insert_rows(): 用于插入指定行索引开始的指定数量的行。insert_rows(idx, amount=1):idx: 要插入的行的起始索引。amount: 要插入的行的数量,默认为1。可选。
from openpyxl import Workbook# 创建一个新的 Excel 工作簿
wb = Workbook()
ws = wb.active# 填充示例数据
for row in range(1, 6):ws.append([f'Data {row}{col}' for col in range(1, 6)])# 保存初始的工作簿(可选)
wb.save('before_insert_rows.xlsx')# 在第3行位置插入1行
ws.insert_rows(3, amount=1)# 在第3行位置插入3行
ws.insert_rows(3, amount=3)# 保存工作簿
wb.save('after_insert_rows.xlsx')print("A row has been inserted at the third position.")

delete_rows()

delete_rows(idx, amount=1): 用于删除指定行索引开始的指定数量的行。delete_rows(idx, amount=1):idx: 要删除的列的起始索引。amount: 要删除的列的数量,默认为1。可选。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 多行数据
data = [['Bob', 25, 'Male'],['Charlie', 35, 'Male'],['Alice', 30, 'Engineer'],['Bob01', 25, 'Male']
]# 逐行添加数据
for row in data:worksheet.append(row)# 删除第3行
worksheet.delete_rows(3)# 删除从第2行开始的3行
worksheet.delete_rows(2, 3)# 打印工作表中数据
for row in worksheet.iter_rows(values_only=True):print(type(row), row)# 输出: <class 'tuple'> ('Bob', 25, 'Male')# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

merge_cells()

merge_cells(): 方法用于合并指定区域的单元格。合并单元格时,合并后的单元格值将仅存储在左上角的单元格中,其余单元格将显示为空。
merge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None):range_string (可选): 合并单元格的区域字符串,例如 "A1:D1" 表示从单元格 A1 到 D1 的范围。start_row (可选): 起始行号。start_column (可选): 起始列号。end_row (可选): 结束行号。end_column (可选): 结束列号。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 合并单元格 A1 到 D1
worksheet.merge_cells('A1:D1')# 设置合并单元格的值
worksheet['A1'] = 'Merged Cell A1 to D1'# 合并单元格从第2行第1列(A2)到第2行第5列(E2)
worksheet.merge_cells(start_row=2, start_column=1, end_row=2, end_column=5)# 设置合并单元格的值
worksheet.cell(row=2, column=1, value='Merged Cell A2 to E2')# 打印工作表中数据
for row in worksheet.iter_rows(values_only=True):print(type(row), row)# 输出: <class 'tuple'> ('Merged Cell A1 to D1', None, None, None, None)
# 输出: <class 'tuple'> ('Merged Cell A2 to E2', None, None, None, None)# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

unmerge_cells()

unmerge_cells(): 方法用于取消已经合并的单元格。
unmerge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None):range_string (可选): 合并单元格的区域字符串,例如 "A1:D1" 表示从单元格 A1 到 D1 的范围。start_row (可选): 起始行号。start_column (可选): 起始列号。end_row (可选): 结束行号。end_column (可选): 结束列号。
from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()
ws = wb.active# 合并单元格 A1 到 D1
ws.merge_cells('A1:D1')
ws['A1'] = 'Merged Cell A1 to D1'# 取消合并单元格 A1 到 D1
ws.unmerge_cells('A1:D1')# 合并单元格从第2行第1列(A2)到第2行第4列(D2)
ws.merge_cells(start_row=2, start_column=1, end_row=2, end_column=4)
ws.cell(row=2, column=1, value='Merged Cell A2 to D2')# 取消合并单元格从第2行第1列(A2)到第2行第4列(D2)
ws.unmerge_cells(start_row=2, start_column=1, end_row=2, end_column=4)# 保存工作簿
wb.save('unmerged_cells_example.xlsx')print("Cells A1 to D1 have been unmerged.")

worksheet.cell()

cell() 说明

cell(): 方法用于访问或设置工作表中特定单元格的数值。cell(row=row_num, column=col_num, value=None):row: 表示要操作的单元格的行号。column: 表示要操作的单元格的列号。value (可选): 要设置的单元格的值。返回值:该方法返回一个单元格对象(Cell 对象),您可以从该对象中获取和设置单元格的值和属性。

cell 对象属性

Cell.value:获取或设置单元格的值。
Cell.row:单元格所在的行号。
Cell.column:单元格所在的列号。
Cell.coordinate:单元格的坐标,如 'A1'。
Cell.data_type:单元格的数据类型(如 shared、inlineStr、s、str、或 None)。
Cell.font: 获取或设置单元格的字体。
Cell.fill: 获取或设置单元格的填充样式。

示例

from openpyxl import Workbook# 创建一个新的Excel工作簿
wb = Workbook()# 获取第一个工作表
worksheet = wb.active# 获取第一行第一列的单元格对象
cell_A1 = worksheet.cell(row=1, column=1)
print(type(cell_A1), cell_A1)     # 输出: <class 'openpyxl.cell.cell.Cell'> <Cell 'Sheet'.A1># 设置单元格的值为 'Alice'
cell_A1.value = 'Alice01'
print(cell_A1.value)   # 输出: Alice01# 另一种设置值的方式
cell_B1 = worksheet.cell(row=1, column=2, value=30)  # 设置第一行第二列的值为 30print(cell_B1.value)  # 输出:30
print(cell_B1.row)    # 输出:1
print(cell_B1.column) # 输出:2
print(cell_B1.coordinate) # 输出:B1
print(cell_B1.data_type) # 输出:n (默认)# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")# 关闭工作簿
wb.close()

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#使用开源操作库MiniExcel操作Excel

简介 MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。 目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。特点 低内存耗用,避免…

Django性能优化:提升加载速度

title: Django性能优化:提升加载速度 date: 2024/5/20 20:16:28 updated: 2024/5/20 20:16:28 categories:后端开发tags:缓存策略 HTTP请求 DNS查询 CDN分发 前端优化 服务器响应 浏览器缓存第一章:Django性能优化概述 1.1 性能优化的意义 性能优化是Web开发中的关键环节,它…

crypto--rsa基础(1)

在ctf---crypto中rsa应该是最常见也是现在最容易考到的密码题型吧,这篇博客就简单的介绍一下rsa和rsa的一些基本的攻击手法. 对于我们这些萌新来说要做rsa的话也必须先掌握四大基本公式就是欧拉函数,费马小定理,中国剩余定理,威尔逊定理,现在就先基本了解一下就能够做题了…

Python/Go 面试题目整理

目录一、Python 基础知识1.1 可变与不可变数据类型1.8 深浅拷贝1.2 PEP8 编程规范1.3 匿名函数1.4 装饰器1.5 迭代器1.6 生成器1.7 面向对象编程思想1.7.1 Python 中的__new__和__init__的区别1.7.2 反射1.7.3 面向对象1.7.4 鸭子类型1.7.5 你对Python的继承怎么看?1.9 GC 机制…

TypeScript入门介绍

目录TypeScript入门介绍什么是 TypeScript?发展历史优缺点应用场景开发工具环境依赖编程IDEvs调试构建工具/工程化步骤汇总第一个项目 TypeScript入门介绍 什么是 TypeScript?1.1 TypeScript 是由微软开发的一种开源的编程语言。它是 JavaScript 的一个超集,通过为 JavaScri…

Shell编程之免交互

目录1.Here Document免交互2.Here Document常规用法(1)免交互执行命令(2)免交互创建并编辑文件内容(3)tee3.Expect免交互4.编写expect免交互脚本步骤5.read 1.Here Document免交互 使用I/O重定向的方式将命令列表提供给交互式程序 标准输入的一种替代品 命令 <<标记…

jupyter notebook无法找到自己的虚拟环境

1:打开cmd/Anaconda Prompt/Anaconda Powershell Prompt2:进入虚拟环境conda activate 环境名 3:conda list查看有无ipykernel包 如果没有,安装两个包:conda install nb_conda conda install ipykernel 如果下载不了将指令换成conda install nb_conda_kernels 注:conda/…

URLSearchParams:url查询处理工具

let params=new URLSearchParams(a=1&b=2&c=3#hash) 方法和属性: .get( ).has( )  //返回true/false .append(name,value)  //向URL中添加新的参数.set(name,value)  //设置指定参数的值,如果参数不存在则添加新参数 .delete(name)  //删除指定名称的参数 .k…

信息安全事件应急包好DVWA(finish)

​ *DVWA* *信息安全事件应急处理报告**皮包**公司* *20**24**年**5**月**20**日* ** ** 目 录 一、 概述 1.1 应急处理服务背景 1.2 应急处理服务目的 1.3 应急处理服务范围 1.4 应急处理服务依据 1.4.1 应急处理服务委托协议 1.4.2 基础标准与法律文件 1.4.3 参考文件…

P8624 [蓝桥杯 2015 省 AB] 垒骰子

原题链接 题解code #include<bits/stdc++.h> using namespace std; #define ll long long const ll mod=1e9+7; ll a[7][7]={0},e[7]={0};void cf1() {ll tem[7]={0};for(int i=1;i<=6;i++){for(int j=1;j<=6;j++){tem[i]+=a[i][j]*e[j];tem[i]%=mod;}}for(int i=1…

BLE+Compound复合设备

实现功能:BLE主从一体功能(centperi)添加USB复合设备(compound)。 思路:参考BLE_USB例程,该例程已经将BLE和模拟USB设备功能整合,并通过TMOS任务处理。将复合设备的报表替换BLE_USB的报表。 USB上传:

【Azure Storage Account】Azure 存储服务计算Blob的数量和大小的Python代码

问题描述 介绍一段Python脚本,可以在微软云中国区使用。 用于计算Azure Storage Account中Container中Blob类型文件的数量和大小,脚本中允许按照容器,层(热/冷/归档),前缀,软删除/非软删除来计算数量和容量大小, 默认使用的时间为以Blob的最后修改时间作为参考。 执行结果…