Python自动化操作Excel表格

一、Python打开及读取Excel表格内容

二、Python向Excel表格中写

三、批量调整字体、样式

四、编程生成Excel内图表

一、Python打开及读取Excel表格内容
#打开以及读取Excel表格内容
#列:column 行:row 格子:cell 表:sheet
#Excel中从1开始计数
from openpyxl import load_workbook
 
workbook = load_workbook(filename='aaa.xlsx')#只能打开存在表格
 
print (workbook.sheetnames)#获取Sheel名称
sheet = workbook['Sheet1']#通过Sheet名称获取表格
print(sheet.dimensions)#获得表格尺寸大小
 
sheet = workbook.active#打开活跃的/唯一的表格
#cell = sheet['A1']#获取A1格子
#.row行数
#.column列数
#.coordinate 坐标
cell = sheet.cell(row=1, column=1)#可用行数和列数定位某个格子
print(cell.value)#该格子的数据
print(cell.row,cell.column, cell.coordinate)#获得某个格子的行数、列数、坐标
cell = sheet['A1:A5']#获得一系列格子
print(cell)
 
#.iter_rows(min_row=最低行数,max_row=最高行数,min_col=最低列数,max_col=最高列数)
#指定行和列的范围,按行获取
#按行获取
for row in sheet.iter_rows(min_row=2,max_row=3,min_col=1,max_col=2):
    for cell in row:
        print(cell)#第二行第一列 到 第三行到第二列
print('-------------------------------------')
#按列获取
for col in sheet.iter_cols(min_row=2,max_row=3,min_col=1,max_col=2):
    for cell in col:
        print(cell)#第二行第一列 到 第三行到第二列
print('-------------------------------------')
#迭代整个表格的所有行 .rows
for row in sheet.rows:
    for cell in row:
        print(cell)
二、Python向Excel表格中写
from openpyxl.utils import FORMULAE#查看openpyxl支持的公式
from openpyxl import Workbook#创建新的Excel表格文件
用Python列表数据插入一行 sheet.append(Python列表) 接在表格内已有数据后面
插入公式 sheet['F1002'] = '=AVERAGE(F2:F1001)'
插入一列 .insert_cols(idx=数子编号)
插入多列 .insert_cols(idx=数子编号,amount=要插入的列数)
插入一行 .insert_rows(idx=数子编号)
插入多行 .insert_rows(idx=数子编号,amount=要插入的列数)
删除一个sheet workbook.remove(sheet实例)
创建新的sheet workbook.create_sheet(sheet名称)
冻结窗格 sheet.freeze_panes = "G2"
#向Excel表格中写
from openpyxl import load_workbook
from openpyxl.utils import FORMULAE#查看openpyxl支持的公式
from openpyxl import Workbook#创建新的Excel表格文件
 
workbook = load_workbook(filename='aaa.xlsx')
sheet = workbook.active
 
#一、
#向某个格子写入内容并保存
sheet['A1'] = '你好啊'
workbook.save(filename='aaa.xlsx')
 
#二、
#用Python列表数据插入一行
#sheet.append(Python列表) 接在表格内已有数据后面
data = [
    ['a', 1],
    ['b', 2],
    ['c', 3],
    ['d', 4],
]
for row in data:
    sheet.append(row)
workbook.save(filename='aaa.xlsx')
 
#三、
#插入公式
sheet['F1002'] = '=AVERAGE(F2:F1001)'
workbook.save(filename='阿里云天池电商婴儿用户数据.xlsx')
 
#四、
#查看openpyxl支持的公式
print(FORMULAE)
 
#五、
#插入一列 .insert_cols(idx=数子编号)
#插入多列 .insert_cols(idx=数子编号,amount=要插入的列数)
#插入一行 .insert_rows(idx=数子编号)
#插入多行 .insert_rows(idx=数子编号,amount=要插入的列数)
sheet.insert_cols(idx=2)
workbook.save(filename='阿里云天池电商婴儿用户数据.xlsx')
 
#六、
#删除列 .delete_cols(idx=数子编号,amount=要删除的列数)
#删除行 .delete_rows(idx=数子编号,amount=要删除的列数)
sheet.delete_cols(idx=2, amount=2)
workbook.save(filename='阿里云天池电商婴儿用户数据.xlsx')
 
#七、
#移动格子 .move_range("C2:D4",row=2,col=-2)向下移2行,向左移2行
#正数为向下或向右,负数为向左或向上
 
#八、
#创建新的sheet workbook.create_sheet(sheet名称)
print(workbook.sheetnames)
workbook.create_sheet('表格2')
print(workbook.sheetnames)
workbook.save(filename='aaa.xlsx')
 
#九、
#删除一个sheet workbook.remove(sheet实例)
print(workbook.sheetnames)
sheet = workbook['表格21']
workbook.remove(sheet)
print(workbook.sheetnames)
workbook.save(filename='aaa.xlsx')
 
#十、
#复制一个sheet workbook.copy_worksheet(sheet实例)
print(workbook.sheetnames)
workbook.create_sheet('表格1')
sheet = workbook['表格1']
workbook.copy_worksheet(sheet)
print(workbook.sheetnames)
workbook.save(filename='aaa.xlsx')
#十一、
#x修改表格名称 sheet.title=''
 
#十二、
#创建新的Excel表格文件
workbook = Workbook()
sheet = workbook.active
sheet.title = '表格1'
workbook.save(filename='这是一个新表格.xlsx')
 
 
#十三、
#冻结窗格 sheet.freeze_panes = "G2"
sheet.freeze_panes = "B2"
workbook.save(filename='aaa.xlsx')
 
#十四、
#添加筛选 sheet.auto_filter.ref = sheet.dimensions
sheet = workbook['(sample)sam_tianchi_mum_baby_tr']
sheet.auto_filter.ref = sheet.dimensions
workbook.save(filename='aaa.xlsx')
三、批量调整字体、样式
from openpyxl.styles import Alignment    #设置对其样式
from openpyxl.styles import Side,Border    #设置边框样式
from openpyxl.styles import PatternFill, GradientFill     #设置填充样式
Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
获取表格中字体的样式 cell.font.属性
设置对其样式 Alignment(horizontal=水平对其模式,vertical=垂直对其模式,text_rotation=旋转角度,wrap_text=是否自动换行)
设置边框样式  Side(style=边线样式,color=边线颜色)
设置填充样式 PatternFill(fill_type=填充样式, fgColor=填充颜色)
设置行高和列宽 row_dimensions[行编号].height=行高
合并单元格
.merge_cells(待合并格子编号)
.merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
#批量调整字体、样式
 
from openpyxl.styles import Font
from openpyxl import load_workbook
from openpyxl.styles import Alignment#设置对其样式
from openpyxl.styles import Side,Border#设置边框样式
from openpyxl.styles import PatternFill, GradientFill#设置填充样式
 
workbook = load_workbook(filename='aaa.xlsx')
sheet = workbook.active
 
cell = sheet['A1']
#一、
#Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
font = Font(name='思源黑体 Regular',size=12,bold=True, italic=True,color='FF0000')
cell.font = font
workbook.save(filename='aaa.xlsx')
 
#二、
#获取表格中字体的样式 cell.font.属性
font = cell.font
print(font.name, font.size, font.bold, font.italic)
 
 
#三、
#设置对其样式 Alignment(horizontal=水平对其模式,vertical=垂直对其模式,text_rotation=旋转角度,wrap_text=是否自动换行)
alignment = Alignment(horizontal='center',vertical='center',text_rotation=45)
cell.alignment = alignment
workbook.save(filename='aaa.xlsx')
 
#四、
#设置边框样式
#Side(style=边线样式,color=边线颜色)
#Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
side = Side(style='thin',color='FF000000')
border = Border(left=side,right=side,top=side,bottom=side)
cell.border = border
workbook.save(filename='aaa.xlsx')
 
#五、
#设置填充样式
#PatternFill(fill_type=填充样式, fgColor=填充颜色)
#GradientFill(stop=(渐变颜色1,渐变颜色2,.....))
cell_a3 = sheet['A3']
patternFill = PatternFill(fill_type='solid', fgColor='99ccff')
cell_a3.fill = patternFill
cell_a4 = sheet['A4']
gradient_fill = GradientFill(stop=('FFFFFF','99ccff','000000'))
cell_a4.fill = gradient_fill
workbook.save(filename='aaa.xlsx')
 
#六、
#设置行高和列宽
#row_dimensions[行编号].height=行高
#column_dimensions[列编号].width=列宽
sheet.row_dimensions[1].height = 50
sheet.column_dimensions['B'].width = 20
workbook.save(filename='aaa.xlsx')
 
#七、
#合并单元格
#.merge_cells(待合并格子编号)
#.merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
sheet.merge_cells('C1:D2')
sheet.merge_cells(start_row=7,start_column=1,end_row=8,end_column=4)
workbook.save(filename='aaa.xlsx')
四、编程生成Excel内图表
from openpyxl.drawing.image import Image #openpyxl 插入图片
from openpyxl.chart import BarChart, Reference#插入柱状图 
from openpyxl.chart import LineChart, Reference#插入条形图 
openpyxl 插入图片 openpyxl.drawing.image sheet.add_image()
插入柱状图 BarChart() Reference()
#编程生成Excel内图表
from openpyxl import load_workbook
from openpyxl.drawing.image import Image #openpyxl 插入图片
from openpyxl.chart import BarChart, Reference#插入柱状图 
from openpyxl.chart import LineChart, Reference#插入条形图 
workbook = load_workbook(filename="阿里云天池电商婴儿用户数据.xlsx")
sheet = workbook.active
 
#一、
#openpyxl 插入图片 openpyxl.drawing.image sheet.add_image()
logo = Image("每颗豆.png")
logo.height = 100
logo.width = 100
 
sheet.add_image(logo, "C1")
workbook.save(filename="aaa.xlsx")
 
#二、
#插入柱状图 BarChart() Reference()
chart = BarChart()
data = Reference(worksheet=sheet,min_row=2,max_row=1001,min_col=5,max_col=6)#设置数据引用范围
categories = Reference(sheet, min_col=10, min_row=10, max_row=10)#设定X轴项目名称
 
chart.add_data(data, titles_from_data=True)#给柱状图添加数据 数据源中有标题
chart.set_categories(categories)
sheet.add_chart(chart, "H2")
workbook.save(filename="阿里云天池电商婴儿用户数据.xlsx")
 
#三、
#插入条形图 BarChart() Reference()
chart = LineChart()
data = Reference(worksheet=sheet,min_row=20,max_row=21,min_col=1,max_col=13)#设置数据引用范围
categories = Reference(sheet, min_col=19, min_row=2, max_row=13)#设定X轴项目名称
 
chart.add_data(data, from_rows=True, titles_from_data=True)#给条形图添加数据 数据源中有标题
chart.set_categories(categories)
sheet.add_chart(chart, "E2")
workbook.save(filename="阿里云天池电商婴儿用户数据.xlsx")
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值