办公自动化少不了要处理Excel文件,今天咱们就来聊聊Python里特别好用的Excel处理库 - openpyxl。
它不光能读写Excel文件,还能搞定格式设置、图表制作这些花里胡哨的功能。
我用了好几年,是真的好用,分分钟就能把枯燥的重复工作自动化了。
安装和基本使用
装这个库超简单,一行代码的事:
pip install openpyxl
来看看最基本的用法:
from openpyxl import Workbook, load_workbook
# 新建工作簿
wb = Workbook()
ws = wb.active # 获取当前活动的工作表
# 写入数据
ws['A1'] = '我是标题'
ws.cell(row=2, column=1, value='第二行数据')
# 保存文件
wb.save('demo.xlsx')
温馨提示:别忘了关闭Excel再用代码操作,不然会报错哦!
读取已有的Excel文件
读取Excel文件也是小菜一碟:
# 打开已有的Excel文件
wb = load_workbook('现有文件.xlsx')
# 获取所有工作表名称
print(wb.sheetnames)
# 选择一个工作表
ws = wb['Sheet1']
# 读取单元格内容
print(ws['A1'].value)
# 遍历所有行
for row in ws.rows:
for cell in row:
print(cell.value)
玩转单元格格式
想把Excel搞得好看点?openpyxl也能帮你:
from openpyxl.styles import Font, PatternFill, Alignment
# 设置字体
cell = ws['A1']
cell.font = Font(name='微软雅黑', size=12, bold=True, color='FF0000')
# 背景颜色
cell.fill = PatternFill('solid', fgColor='CCCCCC')
# 对齐方式
cell.alignment = Alignment(horizontal='center', vertical='center')
图表制作
说实话,用代码画图表开始可能有点懵,不过熟悉了真的超方便:
from openpyxl.chart import BarChart, Reference
# 准备数据
ws['A1'] = '月份'
ws['B1'] = '销量'
months = ['1月', '2月', '3月', '4月']
sales = [100, 150, 200, 130]
for i in range(4):
ws.cell(row=i+2, column=1, value=months[i])
ws.cell(row=i+2, column=2, value=sales[i])
# 创建图表
chart = BarChart()
chart.title = “月度销量统计”
data = Reference(ws, min_col=2, min_row=1, max_row=5)
categories = Reference(ws, min_col=1, min_row=2, max_row=5)
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
# 插入图表
ws.add_chart(chart, “D1”)
温馨提示:图表位置要留够空间,不然会覆盖数据!
实用小技巧
数据处理中常用的一些操作:
# 合并单元格
ws.merge_cells('A1:C1')
# 设置列宽
ws.column_dimensions['A'].width = 20
# 批量写入数据
data = [
['姓名', '年龄', '成绩'],
['小明', 18, 90],
['小红', 17, 85]
]
for row in data:
ws.append(row)
写Excel的时候老是碰到各种坑,这些都是血泪教训:
记得经常保存,万一程序崩了还能保住数据
大文件操作记得用read_only模式,不然内存容易爆
日期格式要特别注意,最好直接用datetime对象
公式要用英文格式,比如SUM不能写成求和
openpyxl是个宝藏库,掌握了它基本能应付大部分Excel处理需求。刚开始用可能觉得有点复杂,多练练就熟悉了。代码写好了,以后再处理Excel就轻松多了,摸鱼时间又多了,美滋滋!
往期回顾
◆
◆
◆
点赞分享
让钱和爱流向你
领取专属 10元无门槛券
私享最新 技术干货