测试开发全栈之Python自动化 openpyxl 一个可以读写 Excel 表格的库,真酷!
程序员一凡
·
2021年02月23日
·
1431 次阅读
「原创声明:保留所有权利,禁止转载」
前言
openpyxl 模块是一个读写 Excel 2010 文档的 Python 库,如果要处理更早格式的 Excel 文档,需要用到额外的库
Excel 文件三个对像
workbook: 工作簿,一个 excel 文件包含多个 sheet。
sheet:工作表,一个 workbook 有多个表名,如 “sheet1”, “sheet2” 等。
cell: 单元格,存储数据对象
安装
pip install openpyxl
第 1 步:打开文件
操作 excel 第一步就是打开文件
括号内必须传入文件的路径
# -*- coding: utf-8 -*-
# @Author : 公众号:程序员一凡
import openpyxl
wb = openpyxl.load_workbook("D:\\study\\test.xlsx")
第 2 步:创建工作表 (如果不创建表,直接跳到第 3 步)
使用代码的方法,去添加表名
默认是加到表最后
# -*- coding: utf-8 -*-
# @Author : 公众号:程序员一凡
import openpyxl
wb = openpyxl.load_workbook("D:\\study\\test.xlsx")
# 添加表名
sheet_study = wb.create_sheet("study")
# 方式二:插入到最开始的位置
# end = wb.create_sheet("study", 0)
第 3 步:选择表
操作一个 sheet 前,必须先要获取这个 sheet 对像
3.1 选择默认的表
获取当前活跃的表
# -*- coding: utf-8 -*-
# @Author : 程序员一凡
import openpyxl
wb = openpyxl.load_workbook("D:\\study\\test.xlsx")
default_name = wb.active
print(default_name)
# 运行结果
<Worksheet "Sheet1">
3.2 自定义选择表
语法:实例化对像 [“表名”]
# -*- coding: utf-8 -*-
# @Author : 程序员一凡
import openpyxl
wb = openpyxl.load_workbook("D:\\study\\test.xlsx")
study_name = wb["study"]
# 第2种获取表名的方式
# sheet = wb.get_sheet_by_name("study")
print(study_name)
# 运行结果
<Worksheet "study">
第 4 步:保存数据
添加表名或其它数据后,必须要保存,否则不会生效
# 添加后,必须要保存,否则不会生效
wb.save("D:\\study\\test.xlsx")
查看表名
# -*- coding: utf-8 -*-
# @Author : 程序员一凡
import openpyxl
wb = openpyxl.load_workbook("D:\\study\\test.xlsx")
sheet_names = wb.sheetnames
print(sheet_names)
# 运行结果
['Sheet1', 'Sheet2', 'study']
访问单元格
注意 row、column 行和列最小的值为 1
# -*- coding: utf-8 -*-
# @Author : 程序员一凡
import openpyxl
wb = openpyxl.load_workbook("D:\\study\\test.xlsx")
sheet = wb.active
sheet.cell(row=1, column=1, value="程序员一凡")
wb.save("D:\\study\\test.xlsx")
删除工作表
# -*- coding: utf-8 -*-
# @Author : 微信公众号:程序员一凡
import openpyxl
wb = openpyxl.load_workbook("D:\\study\\test.xlsx")
sheet = wb.active
# 方式一
wb.remove(sheet)
# 方式二
del wb[sheet]
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「原创声明:保留所有权利,禁止转载」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
暂无回复。