目录
1.excel 相关文件操作模块及安装
2.Python打开及读取Excel内容
3.Python 向Excel 写入内容
4.Python 调整字体与样式
5.生成Excel内图表
(一)Excel 模块及安装:
1.excel python 模块:openpyxl
2.windows 安装:终端输入pip install openpyxl
Microsoft Windows [版本 10.0.19044.2251]
(c) Microsoft Corporation。保留所有权利。
C:\Users\Administrator>pip install openpyxl
3.检查openpyxl 模块是否安装成功:
windows终端输入python回车进入python 终端,再输入import openpyxl
Microsoft Windows [版本 10.0.19044.2251]
(c) Microsoft Corporation。保留所有权利。C:\Users\Administrator>python
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import openpyxl
(二) Excel打开及读取内容
1.打开excel:
load_workbook(文件名)
2.获取工作表
workbook[sheet名称] ---------指定sheet内容
workbook.active ---------当前所在sheet内容
3.获取表格尺寸
sheet.dimensions --------获取表格内容所在区域[例如:A5:B18]
import openpyxl
files=openpyxl.load_workbook('ME team.xlsx') #打开工作表格
print(files.sheetnames) #输出表格内所有sheet名称
sheet=files['ME team 项目审核'] #将获取表格指定sheet 内容
print(sheet.dimensions) #输出sheet 表格尺寸
sheet01=files.active #获取当前表格所在的sheet内容
print(sheet01.dimensions) #输出当前所在sheet 表格尺寸
4.获取表格内某个格子的数据
sheet['A1'] -------获取值
cell.value -------输出值
import openpyxl
files=openpyxl.load_workbook('ME team.xlsx') #打开工作表格
sheet=files['ME team 项目审核'] #将获取表格指定sheet 内容
cell=sheet['A3'] #获取当前单元格B3内容
print(cell.value) #输出B3单元格内容
5.获取一系列格式
sheet['A1:A5'] --------获取A1到A5元素
sheet['A'] -------获取A列所有元素
sheet['A:C'] -------获取A列到C列所有元素
sheet[5] -------获取第5行元素
.rows -------获取所有行
.columns ------获取所有列
import openpyxl
files=openpyxl.load_workbook('ME team.xlsx') #打开工作表格
sheet=files['ME team 项目审核'] #将获取表格指定sheet 内容
cell01=sheet['B3:B4'] #获取一系列单元格
print(type(cell01)) #获取cell01类型
for row in cell01: #遍历cell01元组
print(type(item)) #row也是元组类型
for cols in item: #遍历row元组
print(cols.value) #获取每个元素
cell02=sheet['B'] #获取单元格B列所有内容
print(len(cell02)) #输出cell01有多少个元素
for item in cell02: #遍历元组
print(item.value) #输出每个元素
cell03=sheet['A:C'] #A列到C列内容
cell04=sheet[10] #10行内容
cell05=sheet.rows #所有行内容
cell06=sheet.columns #所有列内容
6.指定行和列范围,按行获取,按列获取
.iter_rows(min_row=最低行数,max_row=最高行数,min_col=最低列数,max_col=最高列数)
.iter_cols(min_row=最低行数,max_row=最高行数,min_col=最低列数,max_col=最高列数)
import openpyxl
files=openpyxl.load_workbook('ME team.xlsx')
sheet =files['ME team 项目审核']
#按行获取指定区域[1-3行,1-3列]
cell01=sheet.iter_rows(min_row=1,max_row=3,min_col=1,max_col=3)
#遍历区域内行元素(元组类型)
for item in cell01:
#遍历行对应的每列元素
for key in item:
print(key.value) #输出每个元素
#按列获取指定区域[1-3列,1-3行]
cell02=sheet.iter_cols(min_row=1,max_row=3,min_col=1,max_col=3)
#遍历区域内列元素(元组类型)
for item in cell02:
遍历列对应的每行元素
for key in item:
print(key.value) #输出每个元素
7.Excel 内容查询
(三)Excel创建及写入内容
1.Excel创建
openpyxl.Workbook() --------创建表格
.save('新建表格名称') --------保存excel文件,及写入名称
2.Excel内容添加
sheet['A1']='输入填写内容' ----------选择表格位置A1,再将需要的内容赋值到该位置
sheet['A1'].value='输入内容' ----------A1表格值为“输入内容”
.append('添加列表') ----------直接添加列表到Excel
import openpyxl
workbook=openpyxl.Workbook() #创建Excel表格,此时未保存文件
sheet=workbook.create_sheet('表格1') #创建表格内的sheet表格,并命名为表格1
#添加方式一
sheet['A1']='hello word' #在表格1内的A1表格写入内容
print(sheet['A1'].value) #输出表格1中A1的值
#添加方式二
sheet['A2'].value='Python' #在表格1内的A2表格写入内容
print(sheet['A2'].value) #输出A2值
#添加方式三
list01=['张山','李四'] #创建新列表内容
sheet.append(list01) #将列表内容自动加入到表格A3,B3
print(sheet['A3'].value,sheet['B3'].value)
workbook.save('new excel') #保存excel文件到文件夹,并命名
3.Excel 添加公式
from openpyxl.units import FORMULAE --------调用excel函数公式
可以调用excel中的函数(sum,average等)
print(FORMULAE) -------查看模块支持哪些函数
from openpyxl.utils import FORMULAE #调用模块
print(FORMULAE) #输出模块支持那些函数
workbook=openpyxl.Workbook() #创建表格
sheet=workbook.create_sheet('表格2') #表格内创建名称为表格2的sheet表
list01=[1,2] #创建列表,含有1,2
sheet.append(list01) #将列表添加到表格2
sheet['A2']='=sum(A1:B1)' #在表格2中A2单元格调用sum函数求A1:B1的和
print(sheet['A2'].value) #输出表格中A2单元格值
workbook.save('sum01.xlsx') #保存表格,命名为sum01
4.插入行和列
#插入一列
.insert_cols(idx=数字编号)
#插入多列
.insert_cols(idx=数字编号,amount=要插入的列数)
#插入一行
.insert_rows(idx=数字编号)
#插入多行
.insert_rows(idx=数字编号,amount=要插入的行数)
import openpyxl
workbook=openpyxl.load_workbook('表格名称.xlsx') #打开工作表格
sheet=workbook['sheet1'] #选择sheet1
#插入列
sheet.insert_cols(idx=1) #第一列插入一列
sheet.insert_cols(idx=3,amount=5) #第三列插入五列
插入行
sheet.insert_rows(idx=1) #第一行插入一行
sheet.insert_rows(idx=3,amount=5) #第三行插入五行
workbook.save('表格名称.xlsx') #保存表格
5.删除和移动单元格
#删除列
.delete_cols(idx=数字编号,amount=要删除的列数)
#删除行
.delete_rows(idx=数字编号,amount=要删除的行数)
#移动单元格
.move_range('A3:B8',row=2,cols=-2)
*正数表示向下或者向右,负数表示向上或向左
import openpyxl
workbook=openpy.load_workbook('表格名称.xlsx')
sheet=workbook['sheet1']
sheet.delete_cols(idx=2,amount=3)
sheet.delete_rows(idx=2,amount=3)
sheet.move_range('A4:B5',rows=3,cols=3)
workbook.save('表格名称.xlsx')
6.表格对象操作
#创建新的sheet
workbook.create_sheet(sheet名称)
#删除sheet
workbook.remove(sheet实例)
#复制sheet
workbook.copy_worksheet(sheet实例)
#修改表格名称
sheet.title
import openpyxl
workbook=openpyxl.load_workbook('sum01.xlsx') #打开工作表格
workbook.create_sheet('new sheet') #创建new sheet表格
sheet=workbook['new sheet']
workbook.remove_sheet(sheet) #删除new sheet表格
sheet1=workbook['表格2']
workbook.copy_worksheet(sheet1) #复制表格2
sheet03=workbook['表格2 Copy']
sheet3.title='表格3' #修改表格名称
workbook.save('sum01.xlsx') #保存表格
#冻结窗格
sheet.freeze_panes='冻结的行或者列'
#添加筛选
sheet.auto_filter.ref=sheet.demensions
import openpyxl
workbook=openpyxl.load_workbook('ME team.xlsx') #打开工作表格
sheet=workbook['ME team 项目审核'] #选择其中一个sheet
sheet.freeze_panes='B1' #B1表示冻结第一列,A1表示第一行
sheet.auto_filter.ref = sheet.dimensions #添加筛选功能
workbook.save('ME team.xlsx')
(四)Python 调整字体与样式
1.表格样式操作
#修改字体
Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否倾斜,color=字体颜色)
#获取字体样式
cell.font.属性
#设置对其样式
Alignment(horizontal=水平对齐,vertical=垂直对齐,text_rotation=旋转角度,wrap_text=是否自动换行)
import openpyxl
#调用字体样式模块和对齐模块
from openpyxl.styles import Font, Alignment
workbook=openpyxl.load_workbook('ME team.xlsx')
sheet=workbook['ME team 项目审核']
cell=sheet['A1']
#设置字体样式
font=Font(name='宋体',size=12,bold=True,italic=True,color='ff0000')
设置单元格字体样式
cell.font=font
cell01=sheet['A2']
#调用cell01单元格字体
font=cell01.font
#输出单元格字体名称,大小,粗细,及颜色
print(font.name,font.size,font.bold,font.color)
cell02=sheet['A2']
#设置单元格字体对齐方式
align=Alignment(horizontal='center', vertical='center', text_rotation=90, wrap_text=True)
#设置cell02单元格对齐方式
cell02.alignment=align
workbook.save('ME team.xlsx')
#设置边框
Side(style=边线样式,color=边线颜色)
Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
#设置填充样式
PatternFill(fill_type=填充样式,fgColor=填充颜色
GradientFill(stop=(渐变颜色1,渐变颜色2,......)
import openpyxl
#调用线条(side)边框(border)填充颜色(PatternFill)填充渐变颜色(GradientFill)
from openpyxl.styles import Side,Border,PatternFill,GradientFill
workbook=openpyxl.load_workbook('ME team.xlsx')
sheet=workbook['ME team 项目审核']
cell01=sheet['B3']
#设置线条颜色
side=Side(style='thin',color='ff0000')
#设置边框颜色
border=Border(left=side,right=side,top=side,bottom=side)
cell01.border=border
#设置填充颜色
pattern_fill=PatternFill(fill_type='solid',fgColor='ffff00')
cell01.fill=pattern_fill
#设置渐变填充颜色
gradient_fill=GradientFill(stop=('ff00ff','00ff00'))
cell02=sheet['B4']
cell02.fill=gradient_fill
workbook.save('ME team.xlsx')
2.设置行高和列宽
.row_dimensions[行编号].height=行高
.column_dimensions[列编号].width=列宽
3.合并/取消合并单元格
.merge_cells(待合并的格子编号)
.merge_cells(start_row=起始行,start_column=起始列,end_row=结束行,end_column=结束列)
.unmerge_cells(待合并的格子编号)
.unmerge_cells(start_row=起始行,start_column=起始列,end_row=结束行,end_column=结束列)
import openpyxl
workbook=openpyxl.load_workbook('ME team.xlsx')
sheet=workbook['ME team 项目审核']
#设置行高
sheet.row_dimensions[1].height=30
#设置列宽
sheet.column_dimensions['A'].width=50
#合并单元格(方式一)
sheet.merge_cells('D1:G2')
#合并单元格(方式二)
sheet.merge_cells(start_row=5,start_column=5,end_row=6,end_column=6)
workbook.save('ME team.xlsx')
(五)生成Excel内图表
1.插入图片
openpyxl.drawing.image 调用模块
sheet.add_image(图片实例,放置地址)
import openpyxl
#调用图片模块
from openpyxl.drawing.image import Image
workbook=openpyxl.load_workbook('ME team.xlsx')
sheet=workbook['ME team 项目审核']
#调用图片
picture=Image('image.png')
#设置图片尺寸
picture.height=100
picture.width=50
#添加图片在表格位置
sheet.add_image(picture,'D1')
workbook.save('ME team.xlsx')
2.插入柱状图
BarChart()
Reference()
import openpyxl
#调用柱状图模块及参考模块
from openpyxl.chart import BarChart,Reference
workbook=openpyxl.load_workbook('图表.xlsx')
sheet=workbook.['柱状图']
#创建图表对象
chart=BarChart()
#数据引用范围
data=Reference(sheet,min_row=1,max_row=6,min_col=1,max_col=2)
#类别引用范围
categories=Reference(sheet,min_row=2,max_row=6,min_col=1)
#图表中添加数据和类别
chart.add_data(data,titles_from_data=True)
chart.set_categories(categories)
#创建图表,及放置位置
sheet.add_chart(chart,'D2')
workbook.save('图表.xlsx')
3.插入条形图
LineChart()
Reference()
import openpyxl
#调用条形图模块及参考模块
from openpyxl.chart import LineChart,Reference
workbook=openpyxl.load_workbook('图表.xlsx')
sheet=workbook.['柱状图']
#创建图表对象
chart=LineChart()
#数据引用范围
data=Reference(sheet,min_row=1,max_row=6,min_col=1,max_col=2)
#类别引用范围
categories=Reference(sheet,min_row=2,max_row=6,min_col=1)
#图表中添加数据和类别
chart.add_data(data,titles_from_data=True)
chart.set_categories(categories)
#创建图表,及放置位置
sheet.add_chart(chart,'D2')
workbook.save('图表.xlsx')