处理Excel电子表格-openpyxl的基本使用

导入模块-打开文件:

import openpyxl

openpyxl.load_workbook()函数,接受文件名,返回workbook对象

wb = openpyxl.load_workbook('example.xlsx')

表的方法:

get_sheet_names()方法,取得工作簿所有表名的列表

names_list = wb.get_sheet_names()

使用wb['Sheet3']可以直接定位到Sheet3表,获得Sheet3的Workbook对象

sheet = wb['Sheet3'] # 此时sheet就是Sheet3的Workbook对象

active属性,取得工作簿的活动表

anotherSheet = wb.active

单元格的方法:

单元格对象Cell

  • value 属性:包含这个单元格保存的值

  • row 属性:包含这个单元格所在的行数

  • column 属性:包含这个单元格所在的列号

  • coordinate 属性:包含这个单元格的坐标,返回列字母和行号的组合如:A1、B2

get_column_letter()方法,可以将列号转换为列字母

c = sheet['B1']
​
# 使用 get_column_letter 将列号转换为列字母
column_letter = get_column_letter(c.column)
c.value
c.row
c.clumn
c.coordinate
column_letter

在调用表的cell()方法时,可以传入整数来作为 row 和 column 关键字参数。

要注意第一行或第一列的整数是1,不是0。

print(sheet.cell(row=1, column=2))
​
print(sheet.cell(row=1, column=2).value)
​
for i in range(1, 8, 2):
    print(i, sheet.cell(row=i, column=2).value)

可以通过Worksheet对象max_row属性和max_column属性来确认表的大小。

print(sheet.max_row)
​
print(sheet.max_column)

列字母与数字之间的转换

openpyxl.utils模块引入函数

openpyxl.cell.column_index_from_string()函数,字母->数字。

openpyxl.cell.get_column_letter()函数,数字->字母。

import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
​
print(get_column_letter(1))
print(get_column_letter(2))
​
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']
​
print(get_column_letter(sheet.max_column))
print(column_index_from_string('A'))
print(column_index_from_string('AA'))

要使用这些函数不必加载一个工作簿,你可以直接使用。

或者你也可以调用一个工作簿的Worksheet对象,利用对象的max_column属性来获取一个整数,然后将该整数传递给get_column_letter(),从而获取这个工作簿的最大列的字母。

在表中获取行和列

我们可以将Worksheet对象切片,从而取得一行、一列或一个矩形区域中的所有Cell对象。

import openpyxl
​
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']
​
print(tuple(sheet['A1':'C3']))
​
# 先循环每一行(ROW)
for rowOfCellObjects in sheet['A1':'C3']:
    # 在循环每一行中的每一个 Cell 对象
    for cellObj in rowOfCellObjects:
        # 先打印cellObj的坐标,再打印它的值
        print(cellObj.coordinate, cellObj.value)
    print('--- END OF ROW ---')

这里我们指明要从A1到C3的矩形区域中的Cell对象,得到了一个Generator(生成器)对象,它包含该区域中的Cell对象。为了看清楚这个Generator对象,可以使用它的tuple()方法,在一个元组中列出它的Cell对象。

这个元组中包含了三个元组,每个元组代表一行,从指定区域的顶部到底部。内部元组中每一个包含指定区域中一行的Cell对象

也就是:

((A1, B1, C1),
 (A2, B2, C2),
 (A3, B3, C3))。

想要访问特定的行或列的单元格的值,也可以利用Worksheet对象的 rows 和 columns 属性。

import openpyxl
​
# 加载工作簿和工作表
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.active
​
# 获取所有列的生成器对象并转换为列表,转换成列表后第一列A变成了0,第二列B是1
columns_list = list(sheet.columns)
print(columns_list[1])
​
for cellObj in columns_list[1]:
    print(cellObj.value)
(<Cell 'Sheet1'.B1>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.B5>, <Cell 'Sheet1'.B6>, <Cell 'Sheet1'.B7>)
Apples
Cherries
Pears
Oranges
Apples
Bananas
Strawberries

利用 Worksheet 对象的 rows属性,可以得到一个由一个元组构成的元组。内部的每个元组都代表了1行,包含该行中的Cell对象。columns 属性也会给你一个元组构成的元组,不过内部的每个元组都包含1列中的Cell对象。

参考书籍:Python编程快速上手

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值