xlwings 让 Excel 原地起飞

昨天在后台留言,有小伙伴让讲解一下 xlwings 这个库,作为互联网圈最宠粉的作者,必须安排。

相比于昨天介绍的 xlrd 和 xlwt 两个 Excel 库,xlwings 简直太好用了。

这一个库就可以实现 Excel 的读写功能,还可以修改单元格格式,同时该库还可以和 Matplotlib 无缝衔接做数据可视化,最厉害的是它还可以直接调用 VBA 程序,简直原地起飞。

安装

使用之前必须先将库安装到本地才可以正常使用。

1
pip3 install xlwings

一行命令解决安装问题,简单粗暴。

上手

1、获取数据表格的元数据

1
2
3
4
5
6
7
8
9
10
11
12
import xlwings as xw

file_path = '/tmp/person.xlsx'
wb = xw.Book(file_path)
print(wb.fullname)

sht = wb.sheets["list"]
print(sht.name)

# 输出结果
/tmp/person.xlsx
list

2、写数据

1
2
sht.range('A1').value = [1, 2, 3]
sht.range('A2').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]

写完之后 Excel 是这个样子的。

3、读数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
print(sht.range('A1').value)

# 输出结果
1.0

print(sht.range('A1:A3').value)

# 输出结果
[1.0, 'Foo 1', 10.0]

print(sht.range('A1:C1').value)

# 输出结果
[1.0, 2.0, 3.0]

print(sht.range('A1:C3').value)

# 输出结果
[[1.0, 2.0, 3.0], ['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]

xlwings 读取数据非常的方便,可以读取指定范围内单元格的数据,简直不要太棒。

4、单元格格式操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 获取单元格行高
sht.range('A1').row_height

# 获取单元格列宽
sht.range('A1').column_width

# 行高自适应
sht.range('A1').rows.autofit()

# 列宽自适应
sht.range('A1').columns.autofit()

# 单于昂背景色
sht.range('A1').color = (34,139,34)

可视化

除了基本的 Excel 之外,xlwings 可以结合 numpy、matplotlib 等库实现更便捷的操作。

1、通过 numpy 写入数据

1
2
3
4
import numpy as np

np_data = np.array((1, 2, 3))
sht.range('A8').value = np_data

2、结合 matplotlib 实现可视化

1
2
3
4
5
6
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot([1, 2, 3, 4, 5])
plt.plot([3, 2, 6, 9, 7])
sht.pictures.add(fig, name='MyPlot', update=True)

总结

今天给大家分享了如何通过 xlwings 更好的操作 Excel,小伙伴们学废了嘛~

Python Geek Tech wechat
欢迎订阅 Python 技术,这里分享关于 Python 的一切。