赞
踩
在后台回复【阅读书籍】
即可获取python相关电子书~
Hi,我是山月。
前面给大家介绍了xlrd、xlwt的教程??
Python自动化办公:xlrd万字教程
Python自动化办公:xlwt万字教程
Python自动化办公:xlwt教程(二)
今天来给大家介绍山月最常用的:openpyxl。它不仅能直接读写,功能相对于xlrd、xlwt来说也较完整。
由于篇幅较长,文章分为基础和进阶两个部分,现在先来看看基础教程。
01
openpyxl的介绍
1、安装
pip install openpyxl
注意:openpyxl模块只支持xlsx/xlsm/xltx/xltm格式,不支持xls格式。
**2、官方文档:**https://openpyxl.readthedocs.io/en/stable/
02
新建
#?导入openpyxl模块的Workbook类
from?openpyxl?import?Workbook
#?创建一个workbook对象,同时也会创建一个工作表
wb?=?Workbook()
#?调用得到正在运行的工作表。注意:调用工作表的索引默认是0,即默认对第一张工作表进行操作。
ws?=?wb.active
#保存
wb.save("实例.xlsx")
效果:
可以使用create_sheet()函数新建一张工作表。
#新建工作表,名称以Sheet1,Sheet2,....自动填充
ws_1?=?wb.create_sheet()????#?默认在结尾处新建一个新的工作表
ws_2?=?wb.create_sheet(0)???#?在当前工作表的指定索引处新建一个工作表
#?用title指定工作表名称
ws_1.title?=?"新建工作表"?
#?新建工作表,并指定名称
ws_3?=?wb.create_sheet(title="新建工作表-2",index=0)
ws_4?=?wb.create_sheet("新建工作表-1",?0)?
#?改变工作表标签颜色,默认为无颜色
ws.sheet_properties.tabColor?=?"F22F27"
实例:
from?openpyxl?import?Workbook wb?=?Workbook() ws?=?wb.active #?改变当前正在运行工作表的标签颜色 ws.sheet_properties.tabColor?=?"F22F27"? #?在开始位置处新建一张名称为【新建工作表-1】的工作表 ws_1?=?wb.create_sheet("新建工作表-1",?0)? #?在结尾处新建一张名称为【新建工作表-2】的工作表 ws_2?=?wb.create_sheet() ws_2.title?=?"新建工作表-2" #保存 wb.save("实例.xlsx")
效果:
03
操作
假设有一个名称为【数据.xlsx】的excel文件,它的内容如下:
如果我们把它设置成只读后,尝试在单元格写入数据的话:
#?导入openpyxl模块的?load_workbook类
from?openpyxl?import?load_workbook
wb?=?load_workbook(filename='数据.xlsx',?read_only=True)?#设置只读
ws?=?wb.active
#读取表格数据
for?row?in?ws.rows:
????for?cell?in?row:
????????print(cell.value)
ws['A9']=88?#尝试写入单元格,会报错
#?关闭文件
wb.close()
结果:
#获取工作簿所有工作表名称 print(wb.sheetnames) #?遍历工作簿所有工作表名称 for?sheet?in?wb: ?print(sheet.title) ? #获取指定工作表名称 ws?=?wb["新建工作表-1"] print(ws.title)?? #复制工作表 ws?=?wb["新建工作表-1"] ws_copy?=?wb.copy_worksheet(ws)? #删除工作表 #?方式一 ws?=?wb["新建工作表-1"] wb.remove(ws) #?方式二 del?wb["新建工作表-1"]
以我们刚刚新建的表格【实例.xlsx】来示例:
#?导入openpyxl模块的load_workbook类 from?openpyxl??import?load_workbook #打开【例子.xlsx】工作薄 wb?=?load_workbook('实例.xlsx') #?遍历工作簿所有工作表名称 for?sheet?in?wb: ?print(sheet.title) #复制工作表 ws?=?wb["新建工作表-2"] target?=?wb.copy_worksheet(ws)? #?删除工作表 del?wb["新建工作表-1"] #获取工作簿所有工作表 print(wb.sheetnames)
结果:
新建工作表-1
Sheet
新建工作表-2
['Sheet', '新建工作表-2', '新建工作表-2 Copy']
#?获得工作表最大列和最大行 print(ws.max_row)?????#?获取工作表最大行 print(ws.max_column)??#?获取工作表最大列 print(ws.calculate_dimension())??#?获取工作表全部数据的单元格区域 #?插入空行/空列 ws.insert_rows(1)?????#?在第1行插入空行 ws.insert_cols(1)?????#?在第1列插入空列 ws.insert_rows(2,2)???#?从第2行开始插入2行空行,即在2、3行插入空行 ws.insert_cols(2,2)???#?从第2列开始插入2列空列,即在B、C列插入空列 #?删除行/列 ws.delete_rows(2)????#?删除第2行 ws.delete_rows(2,2)??#?从第2行开始删除2行 ws.delete_cols(2)????#?删除第2列 ws.delete_cols(2,2)??#?从第2列开始删除2列
以【数据.xlsx】为例:
from?openpyxl??import?load_workbook
wb?=?load_workbook('数据.xlsx')
ws?=?wb.active
print(ws.max_row)?????#?获取工作表最大行
print(ws.max_column)??#?获取工作表最大列
print(ws.calculate_dimension())??#?获取工作表全部数据的单元格区域
ws.insert_cols(2,2)???#?从第2列开始插入2列空列,即在B、C列插入
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。