安装:pip install openpyxl
打开工作簿 load_workbook(文件名)
获取工作表 workbook[sheet名称]
活动表,当前选中的表workbook.active
获取表格尺寸 sheet.dimensions
获取表格内某个格子的数据 sheet['A1']
获取一系列的单元格sheet['A1:A5'] sheet['A:C'] sheet['A'] sheet[5] sheet.rows获取所有的行 sheet.columns获取所有的列
按列获取 .iter_rows(min_row=最低行数,max_row=最高行数,min_col=最低列数,max_col=最低列数)
按行获取 .iter_cols(min_row=最低行数,max_row=最高行数,min_col=最低列数,max_col=最低列数)
获取行号
for col in cols:
print(str(col.row))
import openpyxl
#打开一个Excel表格
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
#获取所有的sheet信息
print(workbook.sheetnames)
#workbook[sheet名称] 活动表,当前选中的表workbook.active
sheet=workbook['理科']
#sheet=workbook.active
#查看工作表尺寸
print(sheet.dimensions)
cells=sheet['B:C']
#元组类型要遍历
# print(cells)
# for cell in cells:
# #print(cell.value)#会报错((| ,)...) print(cells) 元组里面还有一个元组
# #print(cell[0].value)
# print(cell.value)
print(len(cells))#看大元组里面有几个小元组
for cell in cells: #一列是一个元组合起来是一个大元组,得到的是列
for ce in cell: #遍历这个列,输出单元格
print(ce.value) |
import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
sheet=workbook['理科']
cols=sheet.iter_cols(min_row=1,max_row=6,min_col=2,max_col=10)
for col in cols:
for cell in col:
print(cell.value)
print('*'*30)
向某个格子写入内容 sheet['A1']='懒羊羊'
用某个格子写入内容 cell.value='懒羊羊'
使用Python列表数据插入一行 sheet. append(python列表) 一行内容
lst=['姓名','分数']
sheet.append(lst)
插入一列 .insert_cols(id=数字编号) 一列表格
插入多列 .insert_cols(id=数字编号,amount=要插入的列数)
col换成row就是插入行id=数字编号
插入公式 直接赋值公式字符串
from openpyxl.utils import FORMULAE print(FORMULAE)#含有的Excel公式
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
stu_lst=[
['懒羊羊',20],
['喜羊羊',100]
]
for row in stu_lst:
sheet.append(row)
workbook.save('新表.xlsx')
import openpyxl
workbook=openpyxl.Workbook()#创建一个新的Excel文件
sheet=workbook.create_sheet()#创建一个工作表
sheet['A1']='懒羊羊'
workbook.save('新表.xlsx')
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet['B5']='=sum(B3:B4)'
workbook.save('新表.xlsx')
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook["Sheet1"]
sheet.insert_cols(idx=1) #在第一列前插入
workbook.save('新表.xlsx')
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook["Sheet1"]
sheet.insert_cols(idx=2,amount=3) #在第二列之前插入三列
workbook.save('新表.xlsx')
删除列.delete_cols(idx=数字编号,amount=要删除的列数) (行 col改为row)
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook["Sheet1"]
sheet.delete_cols(idx=1,amount=3) #从第一列开始包括第一列,删除四列
workbook.save('新表.xlsx')
移动格子
sheet.move_range('A3:B8',row=3,col=-2) 正数是向下或右
#把A3到B8的数据看成一个整体,移动3行,2列
创建新的sheet
workbook.create_sheet(sheet名称)
删除一个sheet
workbook.remove(sheet名称)
复制一个sheet
workbook.copy_worksheet(sheet名称)
修改表格名称
sheet.title
import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
print(workbook.sheetnames) #查看所有的sheet名称
workbook.create_sheet('羊村') #创建新的sheet
print(workbook.sheetnames)
#获取要删除的工作表的对象
sheet=workbook['羊村']
workbook.remove(sheet)#删除
#获取要复制的工作表的对象
sheet=workbook['文科']
workbook.copy_worksheet(sheet)#复制
#改名字
sheet=workbook['文科']
sheet.title='wenke'
print(workbook.sheetnames)
workbook.save('高一总成绩.xlsx')
冻结窗格sheet.freeze_panes='A2' 从第二行第一列开始冻结
import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
sheet=workbook['理科']
sheet.freeze_panes='B2'
workbook.save('高一总成绩.xlsx')
添加筛选sheet.auto_filter.ref=sheet.dimensions
import openpyxl
workbook=openpyxl.load_workbook('高一总成绩.xlsx')
sheet=workbook['理科']
sheet.auto_filter.ref=sheet.dimensions #dimensions Excel表的一个范围
workbook.save('高一总成绩.xlsx')
调整字体与样式
Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
获取表格中字体的样式 cell.font.属性
设置对齐样式Alignment(horizontal=水平对齐方式,vertical=垂直对齐方式,text_rotation=旋转角度,wrap_text是否换行)
import openpyxl
from openpyxl.styles import Font
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet["A1"]='懒羊羊'
cell=sheet["A1"]
font=Font(name='微软雅黑',size=20,bold=True,italic=False,color='ff0000')#ff0000是红色
cell.font=font
workbook.save('新表.xlsx')
import openpyxl
from openpyxl.styles import Font
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
cell=sheet["A1"]
font=cell.font
print(font.name)
import openpyxl
from openpyxl.styles import Alignment
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
cell=sheet["A1"]
algin=Alignment(horizontal='center',vertical='center')
cell.alignment=algin
workbook.save('新表.xlsx')
设置边框样式
Side(style=边线样式,color=边线颜色)
Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
import openpyxl
from openpyxl.styles import Side,Border
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
cell=sheet["A1"]
side=Side(style='thin',color='ff0000')#设置线条的形状和颜色
border=Border(left=side,right=side,top=side,bottom=side)
cell.border=border
workbook.save('新表.xlsx')
设置填充样式
PatternFill(fill_type=填充样式,fgColor=填充颜色)
GradientFill(stop=(渐变色1,渐变色2,,...))
import openpyxl
from openpyxl.styles import PatternFill,GradientFill
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
#纯色
cell=sheet["B2"]
pattern_fill=PatternFill(fill_type='solid',fgColor='ffff00')
cell.fill=pattern_fill
#渐变色
cell=sheet["D2"]
grad=GradientFill(stop=('ff00ff','00ff00'))
cell.fill=grad
workbook.save('新表.xlsx')
设置行高和列宽
.row_dimensions[行编号].height=行高
.column_dimensions[列编号].width=列宽 列的编号ABCD
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
sheet.row_dimensions[2].height=50
sheet.column_dimensions['B'].width=50
workbook.save('新表.xlsx')
合并单元格
.merge_cells(待合并的格子编号)
.merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
取消合并单元格 .unmerge_cells(...和上面的一样...),前面加个un就行了
import openpyxl
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook['Sheet1']
#sheet.merge_cells(start_row=4,start_column=4,end_row=6,end_column=6)
sheet.merge_cells("D1:G2")
workbook.save("新表.xlsx")
生成图表
输入pip install Pillow显示需要更新,按照指令python -m pip install --upgrade pip进行更新
#这个要先看看,Pillow更新没
插入图片 openpyxl.drawing.image
sheet.add_image
import openpyxl
from openpyxl.drawing.image import Image
workbook=openpyxl.load_workbook('新表.xlsx')
sheet=workbook.create_sheet('imagesheet')
#创建图片对象
bizhi=Image('壁纸.png')
bizhi.height=1200
bizhi.width=1920
sheet.add_image(bizhi,'A1')
workbook.save("新表.xlsx")
插入柱状图
BarChart() Reference——范围
from openpyxl.chart import BarChart,Reference
workbook=openpyxl.load_workbook('柱状图和条形图.xlsx')
sheet=workbook['多列数据的柱状图']
#创建柱状图的图表对象
chart=BarChart()
#数据的引用范围-图表数据
data=Reference(worksheet=sheet,min_row=1,max_row=5,min_col=1,max_col=2)
#类别的应用范围-表名称
categories=Reference(sheet,min_row=2,max_row=5,min_col=1,max_col=1)
#将数据与类别添加到图表中
chart.add_data(data,titles_from_data=True)
chart.set_categories(categories)
#将图表插入工作表中
sheet.add_chart(chart,'F12')
workbook.save("柱状图和条形图.xlsx")



