最近发现一个好用的Python库——xlwings,它可以很容易的使用Python操作Excel,也可以从Excel调用Python。
xlwings功能特点如下:
- 使用接近VBA的语法从Python自动化/与Excel交互;
- 用干净而强大的Python代码替换VBA宏;
- 在Python中编写用户定义函数(UDF)(仅限Windows);
- 通过REST API操作Excel工作簿;
- 完全支持Numpy arrays 和Pandas Series/DataFrames
快速开始
1.安装和导入
使用pip进行安装
pip install xlwings
导入
import xlwings as xw
2.连接Excel工作表
建立Excel表连接,windows上要使用原始字符串转义反斜杠
wb=xw.Book(r"E:\python\example.xlsx")
实例化工作表对象
sht=wb.sheets["sheet1"]
返回工作表绝对路径
wb.fullname
返回工作簿名称
sht.name
3.操作单元格
#在单元格中写入数据
sht.range("A1:A10").value="xlwings"
#读取单元格内容
sht.range("A1").value
#清除单元格内容和格式
sht.range("A1").clear()
#获取单元格列标
sht.range("C1").column
#获取单元格行标
sht.range("A10").row
#获取单元格行高
sht.range("A1").row_height
#获取单元格列宽
sht.range("A1").column_width
#列宽自适应
sht.range("A1").columns.autofit()
#行高自适应
sht.range("A1").rows.autofit()
#单元格填充背景色,传入RGB值
sht.range("A1").color=(255,0,0)
#获取单元格颜色
sht.range("A1").color
#清除单元格颜色
sht.range("A1").color=None
#使用公式
sht.range("B1").formula='=SUM(A1:A10)'
#获取单元格公式
sht.range("B1").formula_array
#在单元格中写入批量数据
sht.range("A2").value=[['one','tow','three'],[1,2,3],[4,5,6]]
#读取表中批量数据
sht.range("A2").expand().value
4.xlwings与numpy、pandas、matplotlib交互
#写入numpy array数据类型
import numpy as np
import pandas as pd
np_data=np.array((1,2,3))
sht.range("C1").value=np_data
#写入pandas DataFrmae数据类型
df=pd.DataFrame([[1,2],[3,4]],columns=['a','b'])
sht.range("A11").value=df
#将数据读取,输出为DataFram类型
sht.range("A11").options(pd.DataFrame,expand='table').value
#将matplotlib图表写入到Excel表格里
import matplotlib.pyplot as plt
%matplotlib inline
fig=plt.figure()
plt.plot([1,2,3,4,5])
sht.pictures.add(fig,name='MyPlot',update=True)
5.操作结果
以上为xlwings的简单操作,有关更多详细信息请参考:
https://www.kancloud.cn/gnefnuy/xlwings-docs/content/default.md