实用openpyxl的基本读写操作

安装

pip install openpyxl

读文件

基本方法

from openpyxl import load_workbook

filepath = r'H:\tmp\test.xlsx'

# 读取指定Excel文件
wbook = load_workbook(filepath)

# 通过属性sheetnames获取所有Worksheet的名字
print(wbook.sheetnames)

# wsheet = wbook.get_sheet_by_name('Sheet1') //老版本
wsheet = wbook['Sheet1']

# 如果读第一个sheet也可以使用下面的方式
# wsheet = wbook[wbook.sheetnames[0]]
# wsheet = wbook.active

# 获取sheet总行数和总列数
rows = wsheet.max_row
cols = wsheet.max_column

# 通过行列获取单元格
scell = wsheet.cell(row=1, column=1)

# cell常用的属性:
# row:cell所在的行,column:cell所在的列
# column_letter:列的英文标签,value:cell的值
# number_format:数据格式,data_type:数据类型
print("cell row:{}".format(scell.row))
print("cell column:{}".format(scell.column))
print("cell column_letter:{}".format(scell.column_letter))
print("cell value:{}".format(scell.value))
print("cell number_format:{}".format(scell.number_format))
print("cell data_type:{}".format(scell.data_type))

# 可以像在excel中一样,直接通过列行定位获取单元格值
print(wsheet['A1'].value)

文件内容如下:

文件内容

输出大概如下:

['Sheet1', 'Sheet2', 'Sheet3']
cell row:1
cell column:1
cell column_letter:A
cell value:id
cell number_format:General
cell data_type:s
id

遍历

from openpyxl import load_workbook

filepath = r'H:\tmp\test.xlsx'

# 读取指定Excel文件
wbook = load_workbook(filepath)

wsheet = wbook['Sheet1']

# 获取A1到C2之间的所有cell
print(wsheet['A1':'C2'])

# 获取2到3行的所有cell
print(wsheet[2:3])

# 获取B到C列的所有cell
print(wsheet['B:C'])

# iter_rows按行迭代,min_row设置起始行从1开始,max_row设置读取最大行
# min_col,max_col同理,设置读取最小最大列
for row in wsheet.iter_rows(min_row=1, max_col=3, max_row=2):
    for cell in row:
        print(cell)

# values_only参数只获取值
for row in wsheet.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    print(row)

# iter_cols按列迭代
for col in wsheet.iter_cols(min_row=1, max_col=3, max_row=2):
    for cell in col:
        print(cell)

# wsheet.values按行获取,每行一个tuple
for row in wsheet.values:
    for value in row:
        print(value)

写数据

from openpyxl import Workbook

filepath = r'H:\tmp\base.xlsx'

# 创建一个excel工作簿
wb = Workbook()

# 创建之后可以通过active获取默认的第一个
default_wsheet = wb.active
# 可以通过title设置sheet的名字
default_wsheet.title = "default_wsheet"

# create_sheet新创建的sheet默认是添加在末尾的
appendWs = wb.create_sheet("append-wsheet")

# 可以通过参数来指定sheet位置,0表示第一个
first_sheet = wb.create_sheet("0-wsheet", 0)

# 插入到倒数第二的位置
wb.create_sheet("-1-wsheet", -1)

# sheet可以通过append来添加一行(row)
for row in range(1, 3):
    first_sheet.append(range(10))

# 通过cell设置值,参数:行,列,值
first_sheet.cell(4, 2, "HELLO")

# 也可以通过excel坐标定位设置值
first_sheet['A1'] = "A1 value"

# 保存文件
wb.save(filepath)

输出文件内容大致如下:

结果文件

我们可以看到0-wsheet在第一个位置,因为是后面插入的,default_wsheet本来在第一个位置,但是因为重新插入了一个,所以变成了老二。
append-wsheet是通过没有指定位置,所以在最后,-1-wsheet指定了位置,在倒数第二。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
24C02是一种常用的串行EEPROM芯片,具有2KB的存储容量。它支持基本读写操作,主要包括取数据、写入数据和擦除数据。 24C02的取操作可以通过以下步骤完成: 1. 发送起始信号,即发送一个低电平的起始位。 2. 发送设备地址,包括芯片的固定地址和写位(操作为1)。 3. 发送要取的存储单元地址。 4. 发送再启动信号,即发送一个高电平的起始位。 5. 发送设备地址,和写位(操作为1)。 6. 取数据,将芯片中存储单元中的数据传输给主控制器。 7. 结束取,发送一个高电平的结束位。 24C02的写入操作可以通过以下步骤完成: 1. 发送起始信号,即发送一个低电平的起始位。 2. 发送设备地址,包括芯片的固定地址和写位(写操作为0)。 3. 发送要写入的存储单元地址。 4. 发送要写入的数据。 5. 结束写入,发送一个高电平的结束位。 24C02的擦除操作是将整个芯片的数据清空,擦除操作通常用于整片擦除,不支持单个存储单元的擦除。擦除操作可以通过以下步骤完成: 1. 发送起始信号,即发送一个低电平的起始位。 2. 发送设备地址,包括芯片的固定地址和写位(写操作为0)。 3. 发送全片擦除命令,将芯片中的所有存储单元数据擦除。 4. 结束擦除,发送一个高电平的结束位。 以上是24C02芯片的基本读写操作,通过这些操作可以实现对芯片中数据的取、写入和擦除。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值