插上翅膀,让excel飞起来——xlwings

catgatp catgatp     2022-10-01     369

关键词:

python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是用来储存数据。二、除了操作数据,还可以调整Excel文件的表格宽度、字体颜色等。另外需要提到的是用COM调用Excel的API操作Excel文档也是可行的,相当麻烦基本和VBA没有区别。

技术分享图片
xlwings官网.png


xlwings的特色

  • xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
  • 可以和matplotlib以及pandas无缝连接
  • 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
  • 开源免费,一直在更新

    基本操作

技术分享图片
xlwings基本对象
  1. 打开已保存的Excel文档
     # 导入xlwings模块,打开Excel程序,默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     app.display_alerts=False
     app.screen_updating=False
     # 文件位置:filepath,打开test文档,然后保存,关闭,结束程序
     filepath=r‘g:Python Scripts	est.xlsx‘
     wb=app.books.open(filepath)
     wb.save()
     wb.close()
     app.quit()
  2. 新建Excel文档,命名为test.xlsx,并保存在D盘。
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     wb=app.books.add()
     wb.save(r‘d:	est.xlsx‘)
     wb.close()
     app.quit()
  3. 在单元格输入值
    新建test.xlsx,在sheet1的第一个单元格输入 “人生” ,然后保存关闭,退出Excel程序。
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     wb=app.books.add()
     # wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
     wb.sheets[‘sheet1‘].range(‘A1‘).value=‘人生‘
     wb.save(r‘d:	est.xlsx‘)
     wb.close()
     app.quit()
    打开已保存的test.xlsx,在sheet2的第二个单元格输入“苦短”,然后保存关闭,退出Excel程序
     import xlwings as xw
     app=xw.App(visible=True,add_book=False)
     wb=app.books.open(r‘d:	est.xlsx‘)
     # wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
     wb.sheets[‘sheet1‘].range(‘A1‘).value=‘苦短‘
     wb.save()
     wb.close()
     app.quit()
    掌握以上代码,已经完全可以把Excel当作一个txt文本进行数据储存了,也可以读取Excel文件的数据,进行计算后,并将结果保存在Excel中。

引用工作簿、工作表和单元格

  1. 引用工作簿,注意工作簿应该首先被打开
     wb.=xw.books[‘工作簿的名字‘]
  2. 引用活动工作簿
     wb=xw.books.active
  3. 引用工作簿中的sheet
     sht=xw.books[‘工作簿的名字‘].sheets[‘sheet的名字‘]
     # 或者
     wb=xw.books[‘工作簿的名字‘]
     sht=wb.sheets[sheet的名字]
  4. 引用活动sheet
     sht=xw.sheets.active
  5. 引用A1单元格
     rng=xw.books[‘工作簿的名字‘].sheets[‘sheet的名字‘]
     # 或者
     sht=xw.books[‘工作簿的名字‘].sheets[‘sheet的名字‘]
     rng=sht.range(‘A1‘)
  6. 引用活动sheet上的单元格
     # 注意Range首字母大写
     rng=xw.Range(‘A1‘)
    其中需要注意的是单元格的完全引用路径是:
       # 第一个Excel程序的第一个工作薄的第一张sheet的第一个单元格
       xw.apps[0].books[0].sheets[0].range(‘A1‘)
    迅速引用单元格的方式是
       sht=xw.books[‘名字‘].sheets[‘名字‘]
       # A1单元格
       rng=sht[’A1‘]
       # A1:B5单元格
       rng=sht[‘A1:B5‘]
       # 在第i+1行,第j+1列的单元格
       # B1单元格
       rng=sht[0,1]
       # A1:J10
       rng=sht[:10,:10]

PS: 对于单元格也可以用表示行列的tuple进行引用

      # A1单元格的引用
      xw.Range(1,1)
      #A1:C3单元格的引用
      xw.Range((1,1),(3,3))

储存数据

  1. 储存单个值
       # 注意".value“
       sht.range(‘A1‘).value=1
  2. 储存列表
        # 将列表[1,2,3]储存在A1:C1中
        sht.range(‘A1‘).value=[1,2,3]
        # 将列表[1,2,3]储存在A1:A3中
        sht.range(‘A1‘).options(transpose=True).value=[1,2,3] 
        # 将2x2表格,即二维数组,储存在A1:B2中,如第一行1,2,第二行3,4
       sht.range(‘A1‘).options(expand=‘table‘)=[[1,2],[3,4]]

读取数据

  1. 读取单个值
     # 将A1的值,读取到a变量中
     a=sht.range(‘A1‘).value
  2. 将值读取到列表中
     #将A1到A2的值,读取到a列表中
     a=sht.range(‘A1:A2‘).value
     # 将第一行和第二行的数据按二维数组的方式读取
     a=sht.range(‘A1:B2‘).value


作者:LuckyFrog
链接:http://www.jianshu.com/p/e21894fc5501
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

插上翅膀,让excel飞起来——xlwings

python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel... 查看详情

插上翅膀,让excel飞起来——xlwings

python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel... 查看详情

插上翅膀,让excel飞起来——xlwings

常用函数和方法Book工作簿常用的apiwb=xw.books[‘工作簿名称‘]wb.activate()激活为当前工作簿wb.fullname返回工作簿的绝对路径wb.name返回工作簿的名称wb.save(path=None)保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径... 查看详情

插上翅膀,让excel飞起来——xlwings

前言当年看《别怕,ExcelVBA其实很简单》相见恨晚,看了第一版电子版之后,买了纸质版,然后将其送人。而后,发现出了第二版,买之收藏。之后,发现Python这一编程语言,简直是逆天,业余非程序员的福音。人生苦短,我用p... 查看详情

插上翅膀,让excel飞起来——xlwings

前言当年看《别怕,ExcelVBA其实很简单》相见恨晚,看了第一版电子版之后,买了纸质版,然后将其送人。而后,发现出了第二版,买之收藏。之后,发现Python这一编程语言,简直是逆天,业余非程序员的福音。人生苦短,我用p... 查看详情

网站制作为公司业绩插上腾飞的翅膀

网站,是一个企业在竞争中能够不断发展的一个重要因素,很多企业之所以能够在经济浪潮中走到现在,在很大程度上是因为有一个非常棒的网站建设,一个好的网站会使您的业绩得到提升,那么,如何进行网站制作呢,接下来... 查看详情

当na(nirvana)chain遇到元宇宙,给梦想插上翅膀

近期(Metaverse)概念的走红,让这个创造于上世纪末的生涩词汇再次以全新的价值出现在互联网当中。元宇宙一词最初由科幻小说作家斯蒂芬所发明,他对元宇宙的定义是:一个让人沉浸在其中的、恍如现世... 查看详情

让elasticsearch飞起来!——性能优化实践干货

原文:让Elasticsearch飞起来!——性能优化实践干货版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/wojiushiwo987/article/details/851097690、题记Elasticsearch性能优化的... 查看详情

为啥我不能让球跳起来?它像火箭一样飞起来

】为啥我不能让球跳起来?它像火箭一样飞起来【英文标题】:Whycan\'tImaketheballjump?Itisshootinguplikearocket为什么我不能让球跳起来?它像火箭一样飞起来【发布时间】:2021-01-1005:05:13【问题描述】:我正在使用一个名为raylib的库,... 查看详情

软件定制开发,给你的idea插上腾飞的翅膀

软件定制开发,给你的idea插上腾飞的翅膀2017互联网创业项目都有哪些?创业意识及其能力是这个时代发展的引擎,因而很多实事与理论指出知识经济的时代即创业的时代。知识经济时代你的一个好的想法也能给你创造价值。创业... 查看详情

hdoj1004-lettheballoonrise(让气球飞起来)(代码片段)

LettheBalloonRiseTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):138223    AcceptedSubmission(s):54591 Proble 查看详情

通过xlwings UDF将数据框返回到excel

】通过xlwingsUDF将数据框返回到excel【英文标题】:ReturningDataFrametoexcelthroughxlwingsUDF【发布时间】:2017-09-1222:14:04【问题描述】:我正在尝试使用Python、Xlwings库和Excel创建用户定义函数。目标是使用一个函数,让我们调用ret_data_fra... 查看详情

serverless:让开发者飞起来的下一个风口!

Serverless:让开发者飞起来的下一个风口!什么是Serverless呢?相信这是第一次见到这个词的反应。我们把词拆开了来看,server就是服务器的意思,而less就是较少的意思,那么合起来的意思就是对服务器我们较少的处理维护,而是... 查看详情

elasticsearch实战(五十)-让elasticsearch飞起来!百亿级数据存储与查询优化实战!!!

    ——continue 查看详情

使用http.sys,让delphi的多层服务真的飞起来

...博客上发过一篇文章:《使用http.sys,让delphi的多层服务飞起来》http://www.cnblogs.com/xalion/p/6219515.html这里边提到如何把mormot的httpserver抠出来,嫁接到webbroker上,非常好的思路。可惜xalion没贴出全部源代码。最近对WebBroker做了点深... 查看详情

vuedevtools调试工具安装让vue飞起来(代码片段)

安装:1.到github下载:gitclonehttps://github.com/vuejs/vue-devtools2.在vue-devtools目录下安装依赖包cdvue-devtoolsnpminstall||cnpminstall--npm&cnpmi到文件夹shells下chrome下打开manifest.json文件把"persistent":false改 查看详情

转载让你的matlab代码飞起来

原文地址:http://developer.51cto.com/art/201104/255128_all.htmMATLAB语言是一种被称为是“演算纸”式的语言,因此追求的是方便性、灵活性以及交互性。在快速性上要比C语言这种性能强劲著称的稍逊一筹。然而,通过一些手段,我们也能... 查看详情

一个文档让vim飞起来(代码片段)

原文地址:http://www.cnblogs.com/songfy/p/5635757.html引言今天我们特地来讲讲这个vim的配置.vim这东西,很多人装逼的时候经常会提到,不过大部分人对个vim的配置还是很陌生的,因为这个编辑器的学习成本还是有点高的,但是不要紧,今天我... 查看详情