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

Python操作Excel——openpyxl使用笔记(3)

3 单元格基本操作


3.1 访问单元格和读写其内容

在前面的例子中,已经简单演示过了向单元格中写入和读取数据。这里进一步提供访问单元格的一些方法。和前面一样,使用工作表的索引方式,可以快速定位一个单元格:

import openpyxl
wb = openpyxl.open('./test.xlsx')
ws=wb.active
cell0=ws['B2']
cell0.value="openpyxl"
wb.save('./test.xlsx')
wb.close()

运行后,在活动工作表的B2中会写入数据:

另外一种方式就是使用工作表的cell函数定位一个单元格,它接受行和列作为参数,返回对应位置的单元格,注意计数的基数是从1开始的,而不是0,测试代码如下:

import openpyxl
wb = openpyxl.open('./test.xlsx')
ws=wb.active
cell1=ws.cell(row=2,column=3)
cell1.value="new method"
wb.save('./test.xlsx')
wb.close()

显然cell1是第二行第三列,也就是C3,执行脚本后效果如下:

通过单元格的value属性,设置或者读取其中的值。


3.2 获取单元格的行数和列数

有时需要获取一张工作表中,包含了多少行和多少列有效数据,这个时候可以使用工作表的属性max_row和max_column,以及min_row和min_column,这四个值返回的都是整数,表示包含有效数据的最大、最小行或者列。
例如,一个工作表中有如下的内容:

则min_row返回4,min_column返回3,max_row返回10,max_column返回7,如下代码所示:

import openpyxl
wb = openpyxl.open('./test.xlsx')
ws=wb.active
print(f'Min Row: {ws.min_row}')             # 4
print(f'Min Column: {ws.min_column}')       # 3
print(f'Max Row: {ws.max_row}')             # 10
print(f'Max Column: {ws.max_column}')       # 7
wb.close()

3.3 范围单元格操作

可以按列或者行进行遍历某个范围内的所有单元格,以先列后行的方式:

import openpyxl
wb = openpyxl.load_workbook('./test.xlsx')
ws = wb.active
x=0
for col in ws.iter_cols(min_col=3, max_col=7, min_row=4, max_row=6):
    for cell in col:
        cell.value=x
        x+=1
wb.save('./test.xlsx')
wb.close()

脚本运行后内容如下:

如果使用iter_rows,则是先遍历行,再遍历列:

import openpyxl
wb = openpyxl.load_workbook('./test.xlsx')
ws = wb.active
x=0
for row in ws.iter_rows(min_row=2, max_row=6, min_col=1, max_col=4):
    for cell in row:
        cell.value=x
        x+=1
wb.save('./test.xlsx')
wb.close()

脚本运行后内容如下:


3.4 删除行或列

使用工作表的del_rows可以删除连续的1行或多行,对于列是使用函数del_columns,例如,打开一个空白的test.xlsx文件,填充10行,然后删除5~6行:

wb = openpyxl.load_workbook('./test.xlsx')
ws = wb.active
for i in range(1, 11):
    ws.cell(row=i, column=1).value = i
ws.delete_rows(5, 2)
wb.save('./test.xlsx')
wb.close()

运行效果如下:

 如果只删除一行,则第二个参数可以省略。对于列的删除操作,也是类似的,这里就不通过脚本演示了。


3.5 插入行或列

向工作表中插入行或者列,可以使用insert_rows或者insert_cols,这两个函数会在指定行前面插入一定数量的行或者列。例如,打开一个空白的test.xlsx文件,填充10行,然后在第3行前面插入2行:

import openpyxl
wb = openpyxl.load_workbook('./test.xlsx')
ws = wb.active
for i in range(1, 11):
    ws.cell(row=i, column=1).value = i
ws.insert_rows(3, 2)
wb.save('./test.xlsx')
wb.close()

脚本运行效果如下:

可以看到在原来的第三行之前插入了两行,对于列也是类似的,此处从略。


http://www.kler.cn/a/507756.html

相关文章:

  • Android 12.0 息屏休眠后立即启动屏保功能实现
  • AWTK fscript 中的 输入/出流 扩展函数
  • AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%
  • Spring Boot 动态表操作服务实现
  • 打造更安全的Linux系统:玩转PAM配置文件
  • 传统摄像头普通形态的系统连接方式
  • Spring Web MVC综合案例
  • unity学习19:unity里用C#脚本获取 gameobject 和 Componenet
  • 【ComfyUI专栏】Git Clone 下载自定义节点的代理设置
  • 运维巡检报告,运维巡检检查单,服务器系统及数据库性能检查,日常运维检查记录表格,信息系统日常运维检查(原件)
  • 【数据分享】1929-2024年全球站点的逐月平均气温数据(Shp\Excel\免费获取)
  • 【华为OD-E卷 - 计算疫情扩散时间 100分(python、java、c++、js、c)】
  • 三种文本相似计算方法:规则、向量与大模型裁判
  • 去哪儿kafka优化案例
  • 广播网络实验
  • VSCode 的部署
  • 【Flink系列】5. DataStream API
  • Solidity01 Solidity极简入门
  • Node.js 完全教程:从入门到精通
  • 深度学习笔记合集
  • 腾讯AI Lab与上交大探索模型“过度”思考
  • Flutter中的事件冒泡处理
  • vue用户点进详情页再返回列表页,停留在原位置
  • 使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址
  • [cg] UE5 调试技巧
  • Spring Boot 全局异常处理