pip install openpyxl出错_openpyxl:开源免费的Python excel操作库

bb68255f01c859c2536d4baf60d8f9be.png

Office Excel是使用非常广泛的一款办公软件,它的功能也是非常强大。但是很多时候,我们对Excel的操作其实都是比较机械的重复劳动,因此Office软件在设计的时候,微软就为它添加了VBA这么一个基于Visual Basic的编程工具,方便办公人员进行一些自动化操作。

但是,如果你在Office 2019中打开VBA,就会发现它和现代的Office界面格格不入。这是因为VBA作为比较早期的一个功能,因为内置于Office之中因而得到了广泛的应用。但是VBA并不是流行的趋势,因此微软后来便不再对其更新。现在Office内置VBA的唯一原因就是为了保持兼容性,让在Office中大量使用VBA的公司能够继续正常运行。

4974b461f19938f06cce0a2e90674e54.png

现代Office的界面与VBA的古老界面对比

那么现在有没有什么比较方便的Excel编程类库呢?答案自然是有的,这就是本文将要介绍的openpyxl,这是一个Python类库,可以非常方便的对Excel进行操作。而Python语言作为当今非常火热的一门语言,不论是IDE支持还是社区的类库支持都非常广泛,使用Python无疑是非常好的选择。

使用openpyxl

通过pip可以非常简单的安装openpyxl,这里为了测试方便,还安装faker库,一个模拟虚拟用户信息的类库。

pip install openpyxl faker

然后就可以利用faker和openpyxl来操作Excel文件了。下面的代码非常简单,相信大家无需过多解释即可看懂openpyxl是如何控制Excel文件的。注意到代码最后部分使用了几个公式来计算各科成绩的统计值。

import osfrom openpyxl import Workbook, load_workbookimport randomfrom faker import Fakerfake = Faker('zh_CN')filename = 'book.xlsx'if os.path.exists(filename):    book = load_workbook(filename)else:    book = Workbook()ws = book.activews.title = '学生成绩表'# 表头ws['a1'] = '姓名'ws['b1'] = '语文'ws['c1'] = '数学'ws['d1'] = '英语'ws['e1'] = '物理'ws['f1'] = '化学'ws['g1'] = '生物'# 创建正态分布的分数def get_random_mark():    mark = random.gauss(75, 12.5)    if mark < 0:        mark = 0    if mark > 100:        mark = 100    return int(mark)# 生成50个人的成绩N = 50for row in range(2, 2+N):    ws[f'a{row}'] = fake.name()    ws[f'b{row}'] = get_random_mark()    ws[f'c{row}'] = get_random_mark()    ws[f'd{row}'] = get_random_mark()    ws[f'e{row}'] = get_random_mark()    ws[f'f{row}'] = get_random_mark()    ws[f'g{row}'] = get_random_mark()# 总计、平均数、方差、标准差ws[f'a{N+3}'] = '总计'ws[f'a{N+4}'] = '平均数'ws[f'a{N+5}'] = '方差'ws[f'a{N+6}'] = '标准差'column = ['b', 'c', 'd', 'e', 'f', 'g']for col in column:    ws[f'{col}{N+3}'] = f'=sum({col}2:{col}{N+1})'    ws[f'{col}{N+4}'] = f'=average({col}2:{col}{N+1})'    ws[f'{col}{N+5}'] = f'=varp({col}2:{col}{N+1})'    ws[f'{col}{N+6}'] = f'=stdevp({col}2:{col}{N+1})'book.save(filename)

用Python执行完上面的代码,就可以看到生成了一个Excel文件,打开它即可看到模拟出来的学生成绩表。

8899bac297e722445c9ba1d0d7c58f1b.png

模拟出来的学生成绩

制作图表

openpyxl不仅可以操控单元格和数据,还可以制作图表,方法同样十分简单,大家看看代码就明白了。通过指定图表的各项属性,我们可以绘制出2D和3D的图表,还可以绘制条形图、饼状图等不同种类的图表,对图表的样式也可以进行修改。

names = Reference(ws, min_col=1, min_row=2, max_row=11)values = Reference(ws, min_col=2, max_col=7, min_row=1, max_row=11)chart = BarChart()chart.add_data(values, titles_from_data=True)chart.title = '前10位学生的成绩图表'chart.x_axis.title = '姓名'chart.y_axis.title = '分数'chart.set_categories(names)chart.width = 30chart.height = 20ws.add_chart(chart, 'J1')

然后打开生成的Excel,就可以看到这次图表也画出来了。

bfd9fef8c6199de4e1f3f090b5f74240.png

绘制出来的条形图

官方文档还有其他种类的图表,如果需要的话可以查看文档。

d77483606e6b6654c2d5f40a56ae5705.png

官方文档列出的其他图表类型

如果你懂一点Python,而且恰好工作上有批量处理Excel的需要,那么openpyxl绝对是你的好帮手,利用它,我们可以方便的用编程来处理Excel文档,更加节约时间,而且不易出错。如果觉得本文不错的话,欢迎点赞+收藏哦,谢谢支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值