文 | 潮汐

来源:Python 技术「ID: pythonall」

人生苦短,我用 Python!

Python 作为一种脚本语言,其编程方式越来越受程序员们的青睐,同时其应用也越来越广泛,其中数据分析岗位人才需求也日益渐增,运用 Python 相关模块进行数据分析能大大提升工作效率,减轻数据分析人员的工作负担。在日常办公中,使用 Python 的场景也越来越多,很多重复的工作直接交给程序执行效率会大大提高,所以 Python 操作 Excel 也成为每一个数据分析人员的必备技能,今天的文章就一起来看看 Python 中能操作 Excel 工作表的神器。

Python 操作 Excel 模块简介

Python 操作 Excel 的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll 等,他们提供的功能归纳起来无非有两种形式:

  • 1、用 Python 读写 Excel 文件,实际上就是读写有格式的文本文件,操作 excel 文件和操作 text、csv 文件没有区别,Excel 文件只是用来储存数据。

  • 2、除了操作数据,还可以调整Excel文件的表格宽度、字体颜色等。另外需要提到的是用 COM 调用 Excel 的 API 操作 Excel 文档同样也是可行的,相当麻烦基本和 VBA 没有区别。

关于 xlwings

为什么 xlwings 能让 Excel 飞起来呢,因为 xlwings 支持 Excel 的读写操作。具体使用请参照 官网 ,一切技术的出现都是为了满足人的惰性,因此 xlwings 能让繁琐的工作简单化、简洁化。

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

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

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

xlwings 优点

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

  • xlwings 可以和 Matplotlib 以及 Pandas 无缝连接

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

  • xlwings 开源免费,并且一直在更新

xlwings 基本操作

xlwings 基本对象

xlwings 安装和使用

和其他模块使用一样,xlwings 在使用之前也需要安装,本文环境为 Python 3.6 版本的 Windows 环境。

模块安装

安装xlwings的最简单方法是通过pip:

pip install xlwings

或者使用conda:

conda install xlwings

再或者


conda install -c conda-forge xlwings

引入模块使用


import xlwings as xw

Python to Excel

连接到工作簿最简单便捷的方法是由 xw.Book 提供:它在所有应用程序实例中查找该工作簿并返回错误,但如果同一个工作簿在多个实例中打开,要连接到活动应用程序实例中的工作簿,则需要使用 xw.books 并引用特定应用程序, 使用区别如下:

Header1 Header2 Header3
New book xw.Book() xw.books.add()
Unsaved book xw.Book('Book1') xw.books['Book1']
UBook by (full)name xw.Book(r'D:/test/file.xlsx') xw.books.open(r'D:/test/file.xlsx')

:在 Windows 上指定文件路径时,应该通过在字符串前放置一个 r 来使用原始字符串,或者使用双反斜杠:D:\Test\file.xlsx

Excel 活动对象


# 活动应用程序(即Excel实例)
app = xw.apps.active# 活动工作簿
wb = xw.books.active  # 在活动app
wb = app.books.active  # 在特定app# 活动工作表
sht = xw.sheets.active  # 在活动工作簿
sht = wb.sheets.active  # 在特定工作簿# 活动工作表的Range
xw.Range('A1')  #在活动应用程序的活动工作簿的活动表上

基本操作

以下代码展示相关基本操作:

  • 打开表格

  • 引用工作表

  • 引用单元格

  • 引用区域

  • 写入数据(数据写入默认按照行写入,如果要指定相应的列写入则需要添加相应参数,指定参数为:transpose = True)

  • 读取数据


import xlwings as xw
# 打开表格
file_path = r'D:/test/file.xlsx'xw.Book(file_path)   # 固定打开表格
xw.books.open(file_path) # 频繁打开表格# 引用工作表
sht = wb.sheets['sheet1']# 引用单元格
rng = xw.Range('A1')
# rng = sht[0,0] # 此代码第一行的第一列即a1,相当于 pandas 的切片# 引用区域
rng = sht.range('a1:a5')
# rng = sht['a1:a5']
# rng = sht[:5,0]# 写入数据sht.range('a1').value = 'Hello Excel' # 指定一个单元格写入数据# 按行写入数据
sht.range('a1').value = [1, 2, 3, 4,5,6,7,8]# 按照列写入数据
sht.range('a2').options(transpose=True).value = [2, 3, 4, 5, 6, 7, 8]# 按照二维列表的方式写入数据sht.range('a9').expand('table').value = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'],['j', 'k', 'l']]# 读取写入的数据print(sht.range('A1:D5').value)

xlwings 结合 matplotlib

xlwings 结合 Matplotlib 使用能讲图画贴入到 Excel 中,具体使用 pictures.add() 方法就可以很容易地将Matplotlib图作为图片粘贴到表格中。详细代码如下:

fig = plt.figure()  # 指定画布# plt.plot([1, 2, 3, 4, 5])plt.plot([36,5,3,25,78])plt.plot([9,10,31,45])plt.plot([6,14,45,31])sht = xw.Book(r'G:/test/test.xlsx').sheets[0]sht.pictures.add(fig, name='myplt', update=True)

结果图片

总结

磨刀不误砍柴工,今天的文章主要是操作 Excel 的工具 xlwings 介绍,大家都用工具操练起来,好好修炼如何拧好螺丝的内功,奥利给!

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式】

识别文末二维码,回复:200908

xlwings-能让 Excel 飞上天相关推荐

  1. xlwings,让excel飞起来!

    xlwings,让excel飞起来! 朱卫军 公众号:pydatas,更多技术文章 https://zhuanlan.zhihu.com/p/82783751 excel已经成为必不可少的数据处理软件 ...

  2. 用xlwings直接调用excel打开xlsx文件

    1.pandas读取csv文件并设置第一列为索引 obj=pd.read_csv('testdata.csv',index_col=0,usecols=[1,2,3]) 2.由于办公系统加密原因,我不 ...

  3. Mac上xlwings库设置excel单元格字体

    pycharm 2022.2        xlwings-version 0.24.6        macOS  m1  12.6 此前遇到的问题: 1. windows的代码在mac上行不通 i ...

  4. 使用Python第三方库xlwings将单个excel工作表快速拆分为多个工作表(附打包好的exe文件)

    使用Python第三方库xlwings将单个excel工作表快速拆分为多个工作表(附打包好的exe文件) 资源链接 CSDN:https://download.csdn.net/download/qq ...

  5. 通过xlwings PIL 将excel图片导出

    通过xlwings PIL 将excel图片导出 复制剪切板上的内容 通过PIL获取剪切板上的内容 存储至本地 PS. 困扰的点就是在操作的时候回遇到range的行高,列宽太小,复制出的图片很小 需要 ...

  6. python使用xlwings库操作Excel常见操作

    目录 安装 **前置知识** 详细使用步骤 **一.打开Excel程序** **二.保存.退出.关闭** **三.新建 Excel 文件** **四.读取内容** **五.写入数据** 1.写入当前文 ...

  7. python xlwings库对于excel单元格的操作

    [高心星出品] 文章目录 前言 一.xlwings获取单元格的数据与格式 二.xlwings修改单元格的数据与格式 总结 前言 在上一篇文章传送门介绍了xlwings库对于单元格的简单操作,本篇文章继 ...

  8. 使用xlwings插件在Excel中调用Python

    xlwings官方文档: 英文版:https://docs.xlwings.org/en/stable/# 中文版:https://www.kancloud.cn/gnefnuy/xlwings-do ...

  9. Python:利用xlwings库实现excel进行插入、删除行操作实例

    Python 操作 Excel 之插入.删除行 第一章:整行插入与删除 ① Excel 的插入行实例演示 插入行演示采用正序遍历操作,直接使用 xlwings 提供的 sheet.api.Rows(& ...

最新文章

  1. 史上最萌的统计学入门书,快来看看长啥样
  2. css设定div固定比例,响应式网页中,如何只用CSS实现div的高和宽保持固定比例
  3. 两个等号(==)和三个等号(===)的区别
  4. SharePoint 2010应用开发系列
  5. JVM——详解类加载过程
  6. Juniper大中国区于肇烈
  7. linux添加nginx启动脚本_linux环境开机自启动nginx
  8. unity动画实现物体颜色闪烁
  9. 轮询、长轮询、长连接、websocket
  10. html 自动增加分页,HTML静态页面如何实现自动分页?
  11. PostgreSQL13.1-CN-v1.0中文手册.chm下载
  12. NPS——搭建属于你的内网穿透平台
  13. 计算机英语摘要,计算机专业英语摘要.ppt
  14. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day18】—— 奇葩问题合集
  15. CrossAir CA-C03 2.4G贴片天线使用步骤
  16. 设置Laber上传时注意字体大小要统一,不然不生效
  17. 阿里云 ECS 7 天实践训练营 - day01 -基于ECS搭建FTP服务
  18. Android Material Design动画 Curved motion | 曲线运动
  19. 魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程
  20. java调用帆软cpt文件_报表中心FineReport中java如何直接调用报表打印

热门文章

  1. VMware虚拟机通过宿主机的无线网络上网
  2. 计量器具(电子秤)模拟通道
  3. 期货有现货支撑(股票,期货,现货)
  4. 使用Dask装载和处理远远超过可用内存资源的市场或行情数据
  5. 家用计算机的内存容量大约是多少升,笔记本内存容量是什么 笔记本内存容量不够用怎么办...
  6. Keil微库 vs 标准C库
  7. 案例——京东三角+CSS三角形
  8. 计算机怎么建立共享网络打印机共享打印机,局域网打印机共享设置,小编教你局域网怎么设置打印机共享...
  9. 上班族的时间管理验测表
  10. java 8 第15篇 给定数字,输出先前的所有的质素和非质素(优化)