如何用 Python xlwings库自动化操作 Excel?

excel已经成为必不可少的数据处理软件,几乎天天在用。python有很多支持操作excel的第三方库,xlwings是其中一个。

关于xlwings

xlwings开源免费,能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。

xlwings还可以和matplotlibnumpy以及pandas无缝连接,支持读写numpy、pandas数据类型,将matplotlib可视化图表导入到excel中。

最重要的是xlwings可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。

xlwings安装和导入

本文python版本为3.6,系统环境为windows,在jupyter notebook中进行实验。
xlwings库使用pip安装:

复制代码
pip install xlwings

xlwings导入:

复制代码
import xlwings as xw

xlwings实操

  • 建立excel表连接

    wb = xw.Book("e:\example.xlsx")

  • 实例化工作表对象

    sht = wb.sheets["sheet1"]

  • 返回工作表绝对路径

    wb.fullname

  • 返回工作簿的名字

    sht.name

  • 在单元格中写入数据

    sht.range('A1').value = "xlwings"

  • 读取单元格内容

    sht.range('A1').value

  • 清除单元格内容和格式

    sht.range('A1').clear()

  • 获取单元格的列标

    sht.range('A1').column

  • 获取单元格的行标

    sht.range('A1').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 = (34,139,34)

  • 获取单元格颜色,RGB值

    sht.range('A1').color

  • 清除单元格颜色

    sht.range('A1').color = None

  • 输入公式,相应单元格会出现计算结果

    sht.range('A1').formula='=SUM(B6:B7)'

  • 获取单元格公式

    sht.range('A1').formula_array

  • 在单元格中写入批量数据,只需要指定其实单元格位置即可

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

  • 读取表中批量数据,使用expand()方法

    sht.range('A2').expand().value

  • 其实你也可以不指定工作表的地址,直接与电脑里的活动表格进行交互

    写入

    xw.Range("E1").value = "xlwings"# 读取
    xw.Range("E1").value

xlwings与numpy、pandas、matplotlib互动

  • 支持写入numpy array数据类型

    import numpy as np
    np_data = np.array((1,2,3))
    sht.range('F1').value = np_data

  • 支持将pandas DataFrame数据类型写入excel

    import pandas as pd
    df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
    sht.range('A5').value = df

  • 将数据读取,输出类型为DataFrame

    sht.range('A5').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)

xlwings与VBA互相调用

xlwings与VBA的配合非常完美,你可以在python中调用VBA,也可以在VBA中使用python编程,这些通过xlwings都可以巧妙实现。这里不对该内容做详细讲解,感兴趣的童鞋可以去xlwings官网学习。

总结

xlwings操作excel语法简单,功能强大,又很好结合了pandas、numpy、matplotlib等分析库,非常适合奔波于python和excel之间的童鞋,让你更轻松地分析数据!

文中这些小例子都能跑,你可以放自己电脑上运行下,或者手敲每个代码,这样绝对能高效率掌握。

相关推荐
hhzz7 小时前
Python大数据实战(十六):音乐推荐系统——基于协同过滤算法构建个性化歌单引擎
大数据·人工智能·python·数据挖掘·数据分析
SunnyDays10118 小时前
Python PDF 转 Markdown 详解(转换整个文档,特定页面,表格,扫描 PDF)
python·pdf 转 markdown·pdf 转 md·扫描 pdf 转 md·pdf 表格转 md
2601_954706498 小时前
云手机 API 自动化实战:Python 批量控机、挂机脚本完整实现
python·智能手机·自动化
志栋智能10 小时前
超自动化安全中的威胁狩猎
运维·安全·自动化
Alan_69111 小时前
聊聊 Swagger/Postman/Apifox 的真实选型与 Python 项目实战
python·测试工具·postman
智慧物业老杨12 小时前
物业绿化数智化权责管控方案:基于工单平台的双层权限追溯模块落地实践
python
曦尧12 小时前
InfiniteTalk:音频驱动的无限时长说话视频生成框架
ai·自动化
wenzhangli713 小时前
oodAgent 4.0 Skills分布式调度 — 从Code Agent实战看自主维护的Agent网络
运维·网络·人工智能·自动化
Metaphor69213 小时前
使用 Python 在 Word 文档中添加批注
python·word
FreakStudio13 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机