xlwings 库使用说明
--xlwings是Python操作Excel的强大扩展库
1 xlwings简介
关于xlwings,xlwings开源免费,能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。
xlwings还可以和matplotlib、numpy以及pandas无缝连接,支持读写numpy、pandas数据类型,将matplotlib可视化图表导入到excel中。
最重要的是xlwings可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
1.1 官方网站:https://www.xlwings.org/
1.2 官方文档:https://docs.xlwings.org/en/stable/
1.3 中文文档:https://www.kancloud.cn/gnefnuy/xlwings-docs/1127450
1.4 版本更新说明:https://docs.xlwings.org/en/stable/whatsnew.html#
2 xlwings实操—基本操作
2.1 建立excel表连接
import xlwings as xw
wb = xw.Book("e:\example.xlsx")
wb = xw.Book() # 这将创建一个新的工作簿
wb = xw.Book('FileName.xlsx') # 连接到当前工作目录中的现有文件
wb = xw.Book(r'C:\path\to\file.xlsx') # 在Windows上:使用原始字符串来转义反斜杠
2.2 实例化工作表对象
sht = wb.sheets["sheet1"]
2.3 返回工作表绝对路径
wb.fullname
2.4 返回工作簿的名字
sht.name
2.5 在单元格中写入数据
sht.range('A1').value = "xlwings"
2.6 读取单元格内容
sht.range('A1').value
2.7 清除单元格内容和格式
sht.range('A1').clear()
2.8 获取单元格的列标
sht.range('A1').column
2.9 获取单元格的行标
sht.range('A1').row
2.10 获取单元格的行高
sht.range('A1').row_height
2.11 获取单元格的列宽
sht.range('A1').column_width
2.12 列宽自适应
sht.range('A1').columns.autofit()
2.13 行高自适应
sht.range('A1').rows.autofit()
2.14 给单元格上背景色,传入RGB值
sht.range('A1').color = (34,139,34)
2.15 获取单元格颜色,RGB值
sht.range('A1').color
2.16 清除单元格颜色
sht.range('A1').color = None
2.17 输入公式,相应单元格会出现计算结果
sht.range('A1').formula='=SUM(B6:B7)'
2.18 获取单元格公式
sht.range('A1').formula_array
2.19 在单元格中写入批量数据,只需要指定其实单元格位置即可
sht.range('A2').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]
2.20 读取表中批量数据,使用expand()方法
sht.range('A2').expand().value
2.21 与正在打开的活动工作表互动
- 其实你也可以不指定工作表的地址,直接与电脑里的活动表格进行交互
# 写入
xw.Range("E1").value = "xlwings"# 读取
xw.Range("E1").value
2.22 表格的清除
#清除表格的内容和格式
sheet.clear()
#清除表格的内容
sheet.clear_contents()
#删除表格
sheet.delete()
3 xlwings与numpy、pandas、matplotlib互动
3.1 支持写入numpy array数据类型
import numpy as np
np_data = np.array((1,2,3))
sht.range('F1').value = np_data
3.2 支持将pandas DataFrame数据类型写入excel
import pandas as pd
df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
sht.range('A5').value = df
3.3 将数据读取,输出类型为DataFrame
sht.range('A5').options(pd.DataFrame,expand='table').value
3.4 将matplotlib图表写入到excel表格里
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([1, 2, 3, 4, 5])
sht.pictures.add(fig, name='MyPlot', update=True)
4 Python API
https://www.kancloud.cn/gnefnuy/xlwings-docs/1127474
附1:类和对象的属性和方法查看方式
- dir(类名或者对象名)
- help(类名或者对象名)
第三方库的源码查看方法
1.库名.__file__
附2:安装(Anaconda里已经嵌入无需手动安装,直接使用Spyder编程即可)
安装xlwings的最简单方法是通过pip:
pip install xlwings
或者 conda:
conda install xlwings
请注意,官方的conda包版本可能会稍许落后。 但是,您可以使用conda-forge频道(参见:https://anaconda.org/conda-forge/xlwings) 获取最新的(但可能仍然是pip发布后一天左右):
conda install -c conda-forge xlwings
注意
当您使用Mac Excel 2016并使用conda安装xlwings(或使用Anaconda附带的版本)时,您需要运行$ xlwings runpython install一次以启用来自VBA的RunPython调用。 或者,您只需使用pip安装xlwings即可。
依赖
- Windows: pywin32, comtypes
在Windows上,如果使用conda或pip安装xlwings,则会自动处理依赖项。
- Mac: psutil, appscript
在Mac上,如果使用conda或pip安装xlwings,则会自动处理依赖项。 但是,使用pip,Xcode命令行工具需要可用。 需要Mac OS X 10.4(Tiger)或更高版本。 Mac的推荐Python发行版是Anaconda。
可选的依赖项
- NumPy
- Pandas
- Matplotlib
- Pillow/PIL
这些包不是必需的,但强烈推荐,因为它们与xlwings非常相配。
加载项
有关如何安装xlwings加载项的信息,请参阅加载项。
Python版本支持
xlwings在Python 2.7和3.3+上进行了测试