openpyxl简介
openpyxl模块是用于读取/写入excel xlsx/xlsm文件的Python库。
openpyxl模块安装
在终端输入:'pip install openpyxl'
excel文档的基本定义
(1)工作簿(workbook):一个excel文件就称为一个工作簿
(2)工作表(sheet):工作簿中每一张表格称为工作表
(3)活动表(active sheet):指当前正在操作的工作表
(4)行(row):工作表中的每一行(1,2,3,4…65536)
(5)列(column):工作表中的每一列(1,2,3,4…256)
(6)单元格(cell):工作表中的每一个格
对excel基本操作
1.创建工作簿
(1)创建一个名为test.xlsx文件
(2)在工作簿上新建一个名为”test“的sheet页
(3)保存创建的工作簿
(4)关闭该文件
# 导入openpyxl模块
from openpyxl import Workbook
# 创建一个工作簿对象
wb = Workboot()
# 在索引为0的位置创建一个名为test的sheet页
ws = wb.create_sheet('test',0)
# 将创建的工作簿保存为test.xlsx文件
wb.save('test.xlsx')
# 关闭该文件
wb.close()
2.获取工作簿信息
(1)加载已有的工作簿
(2)获取sheet页
(3)获取工作簿的属性(包括):
1)sheetnames
2)actvie:当前活跃的worksheet
3)read_only:判断是否以read_only模式打开excel文档
4)encoding:获取文档的字符集编码
5)properties:获取文档的元数据,如标题、创建者,创建日期等。
import openpyxl
# 加载工作簿
wb = openpyxl.load_workbook('text.xlsx')
# 获取sheet页
ws1 = wb['test']
ws2 = wb.get_sheet_by_name('test')
#获取sheet页名称
sheetname = wb.sheetnames
#获取当前活跃的worksheet
activeSheet = wb.active
# 获取是否以read_only模式打开excel文档
isRead_Only = wb.read_only
#获取文档的字符集编码
get_encoding = wb.encoding
# 获取文档的元数据
get_properties = wb.properties
访问单元格
(1)访问单个单元格如A1:
#两种方式
cell_1 = ws1['A1']
cell_2 = ws1.cell(row=1,column=1)
(2)获取单元格内容:.value
即可:
value_1 = ws1['A1'].value
value_2 = ws1.cell(row=1,column=1).value
(3)给单元格赋值:
ws1['A1'].value = '给excel的A1表格赋值'
ws1.cell(row=1,column=1).value='给excel的A1表格赋值'
对于给多个单元格的设置可以借助于for循环。
注意:设置后要保存工作簿,否则没有效果。
(4)多个单元格操作:
①使用列表切片
#访问A1~C3范围内的单元格
get_A1toC3=ws1['A1':'C3']
#访问A列所有存在数据的单元格
get_Acluomn = ws1['A']
#访问A列到C列所有存在数据的单元格
get_AcolumnToCcolumn = ws1['A:C']
#访问第一行所有存在数据的单元格
get_thefirstColumn = ws1[1]
#访问第1行至第5行所有存在数据的单元格
date = w1.[1:5]
②for循环访问多个单元格:
#按照行来先输出
for row in ws1.iter_rows(min_row=1,max_col=2,max_row=2):
for cell in row:
print(cell)
#输出:
<Cell 'test'.A1>
<Cell 'test'.B1>
<Cell 'test'.A2>
<Cell 'test'.B2>
#按照列来先输出
for col in ws1.iter_cols(min_row=1,max_col=2,max_row=2):
for cell in col:
print(cell)
#输出:
<Cell 'test'.A1>
<Cell 'test'.A2>
<Cell 'test'.B1>
<Cell 'test'.B2>
注意:
使用openpyxl保存文件的时候,文件是默认替换的!
对excel中格式与内容的修改
背景:批量修改某个文件夹中所有文档的格式或内容,将一系列(模板相同)的所有文档放入一个文件夹中(./case)
第一步:获取case文件夹中所有文件名
import os
#获取所运行脚本的绝对路径
script_path = os.getcwd()
#得到需要修改的文档的绝对路径
case_path = script_path + '\case'
#获取文件夹中所有文档的名称
Excel_Name = os.listdir(case_path)
第二步:对excel进行操作
1.加载工作簿并获取此excel中所有sheet页的名称
for case in Excel_Name :
#加载excel
wb = openpyxl.load_workbook(r'%s'%case_path+r'\%s'%case)
#获取sheet页所有名称
All_Sheet = wb.sheetnames
2. 修改某个sheet页中某个单元格的内容
#接上一步
#获取该sheet页
sheet1 = wb('%s'%All_Sheet[0])
#修改sheet1中A9的内容
sheet1['A9'].value = '修改成功啦!'
3.修改某个单元格的边框样式
#接上一步,修改sheet1 B2:E2单元格的边框样式
sheet1['B2:E2'].border = Border(top=Side(style='thick',color=colors.BLACK),
left=Side(style='thick',color=colors.BLACK),
right=Side(style='thick',color=colors.BLACK),
bottom=Side(style='thick',color=colors.BLACK))
4.删除某个单元格的行
#接第二步中的步骤2:删除sheet1中的第8和9行
sheet1.delete_rows(8,9)
5.隐藏某个单元格的列
#接第二步中的步骤2:隐藏sheet1中的第E和K列
sheet1.column_dimension.group('K','E',hidden=True)
未完待续…