openpyxl 的基本操作 (办公自动化)

openpyxl简介

openpyxl 是一个第三方库,可以处理xlsx格式的Excel文件,也就是 Excel 2003 以上版本的 Excel 文件。
(2003 版本的可以使用 xlrd 和 xlwt 这两个库来读取,但是我个人建议 xls 文件还是用 pandas 来处理比较好。)

第一步是安装 openpyxl 这个库
在 cmd 输入 pip install openpyxl -i https://pypi.doubanio.com/simple
(这里笔者使用的是豆瓣源,下载速度相比不换国内源的会快很多, 如果已经配置国内源的, 直接输入 -i 前面部分就行)

-创建文件

from openpyxl import Workbook


# 方法一 这种方法默认表名为 Sheet
wb = Workbook()
ws = wb.active  # 新建一个Sheet

# 方法二 这种方法可以自定义表名和插入的位置,如果输入位置,默认为0
ws = wb.create_sheet('Shee1', 0)

- 打开文件

from openpyxl import load_workbook

wb = load_workbook('xxx.xlsx')

- 获取表名

# 获取所有 Sheet 的名称, 得到的是一个所有 Sheet 名称的列表
sheet_names = wb.sheetnames

- 选择表

# 方法一 直接读取 Excel 里面被选中的那个 Sheet
ws = wb.active

# 方法二 自己输入 Sheet 的名称
ws = wb['Sheet']

- 存储数据

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 第一种 row为行,column为列
ws.cell(row=1, column=2).value = 1
# 可直接简化为
ws.cell(1, 2).value = 1

# 第二种方法
ws['B1'].value = 1

# 一次添加一行数据
ws.append([1, 2, 3, '4'])
# 注意,这里添加多少数都要用中括号括起来

# 最后记得保存数据
wb.save('文件名.xlsx')

- 读取数据

from openpyxl import load_workbook

# 这里的 test.xlsx 文件你们在 py 文件的同个目录下新建一个填一下数据就行了
wb = load_workbook('test.xlsx')
ws = wb.active

# 读取一个单元格 方法一
print(ws['A1'].value)

# 读取一个单元格 方法二
print(ws.cell(1, 1).value)

# 读取单元格的值和存储单元格的值是差不多,一个是读取值出来,一个是赋值进去

- 获取 Sheet 表的最大行列数

from openpyxl import load_workbook

wb = load_workbook('test.xlsx')
ws = wb.active

# 获取最大行数
max_r = ws.max_row
# 获取最大列数
max_c = ws.max_column

- 列字母和坐标数字相互转换

from openpyxl.utils import get_column_letter, column_index_from_string
from openpyxl import Workbook


wb = Workbook()
ws = wb.active

# 根据列的数字返回字母
print(get_column_letter(3))  # C
# 根据字母返回列的数字
print(column_index_from_string('D'))  # 4

- 遍历单元格

from openpyxl import load_workbook

wb = load_workbook('test.xlsx')
ws = wb.active

# 注意
# openpyxl 读取 Excel 的索引是从 1 开始的
# 因为 range 函数是左闭右开,再加上索引是从 1 开始的,所以最大值都要 +1
for i in range(1, ws.max_row+1):
    for j in range(1, ws.max_column+1):
        print(ws.cell(i, j).value)

下一篇将写 openpyxl 一些高级一点的操作,例如给单元格弄格式,颜色等等
喜欢的文章可以关注我,觉得文章对你有用的话点个赞和收藏喔

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 3

openpyxl:thumbsup:

4年前 评论
GA17 (楼主) 4年前
Coolest (作者) 4年前
GA17 (楼主) 4年前
Coolest (作者) 4年前
xuri

推荐一个功能丰富、兼容性好、高性能的 Excel 文档基础库:github.com/xuri/excelize

3年前 评论

淘宝爬虫 反扒那么厉害 你真能突破了?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!