插上翅膀,让Excel飞起来——xlwings(一)

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

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\test.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:\test.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:\test.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:\test.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
链接:https://www.jianshu.com/p/e21894fc5501
來源:简书

原文地址:https://www.cnblogs.com/jaww/p/9535784.html

时间: 2024-11-06 11:34:39

插上翅膀,让Excel飞起来——xlwings(一)的相关文章

Spring Boot (六): 为 JPA 插上翅膀的 QueryDSL

在前面的文章中,我们介绍了 JPA 的基础使用方式,<Spring Boot (三): ORM 框架 JPA 与连接池 Hikari>,本篇文章,我们由入门至进阶的介绍一下为 JPA 插上翅膀的 QueryDSL. 1. 引言 不可否认的是 JPA 使用是非常方便的,极简化的配置,只需要使用注解,无需任何 xml 的配置文件,语义简单易懂,但是,以上的一切都建立在单表查询的前提下的,我们可以使用 JPA 默认提供的方法,简单加轻松的完成 CRUD 操作. 但是如果涉及到多表动态查询, JPA

插上翅膀,让Excel飞起来——xlwings(四)

前言 当年看<别怕,Excel VBA其实很简单>相见恨晚,看了第一版电子版之后,买了纸质版,然后将其送人.而后,发现出了第二版,买之收藏.之后,发现Python这一编程语言,简直是逆天,业余非程序员的福音.人生苦短,我用python.简短几句代码,实现好多自己不敢想的功能.自学VBA发现对VBA和python,我有着这样几个看法:(只是针对自动化办公) 非专业表哥,只是普通办公,希望偶尔遇到点重复的工作可以自动化一下.VBA对于我来说,要记得东西还是太多了,语法上不简洁.每写一个功能,代码太

插上翅膀,让Excel飞起来——xlwings(三)

xlwings基本对象 xlwings基本对象 App相当于Excel程序,Book相当于工作簿.N个Excel程序则由apps表示,N个工作簿由books表示. 对工作簿的操作 #导入xlwings模块 import xlwings as xw #新建工作簿,这里默认为新建了一个App,即打开Excel程序,并新建一个工作簿 xw.Book() #引用工作簿 xw.Book('工作簿3') # 引用工作簿也可以用books xw.books['工作簿3’] #打开已有工作簿 xw.Book(r

插上翅膀,让Excel飞起来——xlwings(二)

常用函数和方法 Book 工作簿常用的apiwb=xw.books['工作簿名称'] wb.activate()激活为当前工作簿 wb.fullname 返回工作簿的绝对路径 wb.name 返回工作簿的名称 wb.save(path=None) 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径-wb. close() 关闭工作簿代码例子:# 引用Excel程序中,当前的工作簿wb=xw.books.acitve# 返回工作簿的绝对路径x=wb.fullname# 返回工作簿的名称

让Jayrock插上翅膀(加入输入输出参数注释,测试页面有注释,下拉框可以搜索)

继上一篇文章介绍了Jayrock组件开发接口的具体步骤和优缺点之后,今天给大家带来的就是,如何修复这些缺点. 首先来回顾一下修复的缺点有哪些: 1.每个接口的只能写大概的注释,不能分开来写,如接口的主要功能,输入的参数是什么意思,输出的字段是什么意思. 2.测试页面中,针对每个接口的功能注释是没有的,这样非常不方便,因为接口一多,开发人员很难快速的定位要使用的接口. 3.测试页面中,选择的下拉框不能输入搜索,只能一个个选择,接口一多,绝对是个悲剧的活. 那么下面就展示我是如何修复这些缺点的: 1

智慧党建乘云起,微服务架构为“互联网+党建”插上翅膀

数字化转型是目前各行业企业面临的首要难点,为充分展示各行业在数字化转型中对云计算的不同需求与特有的转型经历,BoCloud博云推出了[数字化背后的云引擎]系列文章,涉及互联网金融.银行.政务.能源.制造等多个行业,立足行业场景与业务痛点,讲述创新云技术如何推动企业数字化转型和业务创新. 一.国有企业的"根"与"魂" 互联网这一传播媒介形式的迅速发展,使信息传播实现了数字化信息的传递.交流与共享. 随着互联网技术对政治经济生活广泛而深入的影响,如何利用信息化手段加强党

微信小程序为电商插上翅膀

微信小程序从2017年1月上线开始到现在即将满2周岁了,而2018年可以说是微信小程序的爆发年,它也向我们展示了惊人的成长速度.据统计,截至到2018年9月底,已上线微信小程序超过200 微信小程序从2017年1月上线开始到现在即将满2周岁了,而2018年可以说是微信小程序的爆发年,它也向我们展示了惊人的成长速度.据统计,截至到2018年9月底,已上线微信小程序超过200万个,有300万开发者加入,日活跃量超过4亿. 微信小程序,是基于微信的一种商业微程序,功能与市面上的APP差不多,不用下载,

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

软件定制开发,给你的idea插上腾飞的翅膀 2017互联网创业项目都有哪些?创业意识及其能力是这个时代发展的引擎,因而很多实事与理论指出知识经济的时代即创业的时代. 知识经济时代你的一个好的想法也能给你创造价值.创业就是从你的一个想法出来的. 创业的魅力也许就在于这个神秘的Idea变成现实的过程.Idea是创业成功中最核心.最关键的.最没规律可循的一个环节.当你有了一个好的idea后,你会如何去实现它呢? 这时候你就得找专业的人去帮你出谋划策,最近有一个互联网平台专门做将客户的idea变成具有商

黑客玩法,插上你的专有U盘才能开机

这个玩法的效果是这样的: 1.插上你的专有U盘,按电脑开机按钮,电脑正常启动运行: 2.如果不插专有优U盘,按电脑开机按钮,进入桌面后1秒钟电脑自动关机,无法使用.也就是说,没有优U盘将无法使用你的电脑. 下面教你如何实现上面的玩法: 第一步:在自己的U盘(假设是F盘)里,新建一个文本文件,内容可以为空,另存为"密码U盘.txt"文件. 第二步:在电脑的D盘里,新建一个文本文件,编辑该文本文件,文本文件内容如下: @echo off if not exist F:\密码U盘.txt s