Openpyxl模块是一个读写Excel文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。下面将介绍Openpyxl模块的部分用法。
1. 安装Openpyxl模块
pip install openpyxl
2. 导入Openpyxl模块
import openpyxl from Workbook
下面让我们来开始操作excel
3. 创建工作簿并保存
from openpyxl import Workbook
wb = Workbook() # 创建excel工作簿
# 若不创建工作表,工作簿中默认包含一个名为 sheet 的工作表
# 创建工作表
wb.create_sheet("富婆通讯录",0) # 工作表名称 表位置(不指定则默认创建在最后)
wb.save("py_test.xlsx") #设置保存文件名
4. 打开本地工作簿并新建工作表
# Date: 2021/12/12 10:36
from openpyxl import load_workbook
wb = load_workbook("py_test.xlsx") # 打开已有工作簿
sheet = wb.active # 获取当前活动的worksheet
print(sheet.title) # 打印工作表名
# Sheet
print(sheet)
# <Worksheet "Sheet">
wb.create_sheet("富婆通讯录",0) # 创建新的工作表
wb.create_sheet("hello") # 默认创建在最后
wb.save("py_test.xlsx") # 保存
5. 写入数据
# Date: 2021/12/12 13:31
import datetime
from openpyxl import workbook,load_workbook
wb = load_workbook("py_test.xlsx")
sheet = wb.active
sheet.title = "写入数据" # 修改工作表名
# 写入数据
sheet["a1"] = "第一次写入数据"
sheet["c1"] = datetime.datetime.now().strftime("%Y-%m-%d") #添加时间
sheet.append(["按行添加数据","第二个","都三个","..."])
wb.save("py_test.xlsx")
6.遍历数据
# Date: 2021/12/12 13:45
from openpyxl import workbook,load_workbook,worksheet
wb = load_workbook("py_excel处理.xlsx")
print(wb.sheetnames) # 打印所欲工作表名称
# print(wb.get_sheet_name()) ['图书销售情况表', 'Sheet2', 'Sheet3']
# print(wb.get_sheet_by_name("图书销售情况表")) <Worksheet "图书销售情况表">
#sheet = wb.get_sheet_by_name("图书销售情况表")
sheet = wb["图书销售情况表"]
print(sheet["b3"]) # <Cell '图书销售情况表'.B3>
print(sheet["b3"].value) # 计算机类
# 获取指定列的切片数据
for cell in sheet["b3:e15"]:
print(cell[0].value)
# 按行遍历
for row in sheet: # 循环获取表数据
for cell in row: # 循环获取每个单元格数据
print(cell.value,end=" ")
print()
# 指定行列
for row in sheet.iter_rows(min_row=3,max_row=20,min_col=1,max_col=5):
for cell in row:
print(cell.value,end=" ")
print()
7.表格样式
# Date: 2021/12/12 14:47
from openpyxl import load_workbook
from openpyxl.styles import Font,colors,Alignment,Border,Side # 导入字体、颜色、对齐、边框
wb = load_workbook("py_excel处理.xlsx")
sheet = wb["图书销售情况表"]
# 声明样式
cell_style= Font(name="楷体",size=24,italic=True,color=colors.BLUE,bold=True) # 楷体 24号 倾斜 蓝色 加粗字体
# 设置边框样式
cell_border = Border(top=Side(border_style='double',color=colors.BLUE),
bottom=Side(border_style='double',color=colors.BLUE),
left=Side(border_style='double',color=colors.BLUE),
right=Side(border_style='double',color=colors.BLUE))
# 设置单元格样式
sheet["a1"].font = cell_style
# 设置单元格对齐方式
sheet["a1"].alignment = Alignment(horizontal="center",vertical="center") # 水平居中、垂直居中
# 设置单元格行高列宽
sheet.row_dimensions[1].height = 80 # 第一行行高
sheet.column_dimensions["a"].width = 10 # 第a列列宽
# 设置单元格边框
sheet["a1"].border = cell_border
wb.save("py_excel处理.xlsx") # 保存
8.补充
# 删除工作表的两种方式
del wb["sheetname"]
ws = wb["sheetname"]
附录
Workbook对象的部分属性:
.active 获取活动的Worksheet
.read_only 是否以read_only模式打开Excel文档
.encoding 文档的字符集编码
.properties 文档的元数据,如标题,创建者,创建日期等
.worksheets 以列表的形式返回所有的Worksheet
Workbook对象常用方法:
.get_sheet_names 获取所有表格的名称
.get_sheet_by_name 通过表格名称获取Worksheet对象
.get_active_sheet 获取活跃的表格
.remove_sheet 删除一个表格
.create_sheet 创建一个空的表格
.copy_workbook 在workbook内拷贝表格
Worksheet对象部分属性:
.title 表格标题
.dimensions 表格大小,指含有数据的表格大小
.max_row 表格的最大行
.min_row 表格的最小行
.max_column 表格的最大列
.min_column 表格的最小列
.rows 按行获取单元格
.column 按列获取单元格
.freeze_panes 冻结窗格
.values 按行获取表格内容
Worksheet对象常用方法:
.iter_rows 按行获取所有单元格
.iter_column 按列获取所有单元格
.merged_cells 合并多个单元格
.unmerge_cells 移除合并的单元格
对excel文档进行操作后切记进行保存,第一次写文章记录,多有不足,敬请大佬批评指正!!!