xlwings模块(数据保存为xlsx文件)

19 篇文章 0 订阅
15 篇文章 0 订阅

目录

安装

使用

创建App

工作簿Book与Books

工作表Sheet

引用区域与单元格操作


xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。开源免费,一直在更新。特点:

  • xlwings支持.xls读,支持.xlsx文件读写。 
  • 支持Excel操作。 
  • 支持VBA。 
  • 强大的转换器可以处理大部分数据类型,包括在两个方向上的numpy array和pandas DataFrame。

文档链接:

xlwings 文档https://docs.xlwings.org/en/stable/index.html

安装

pip install xlwings

使用

在我们操作之前可以先了解下,如下内容:

  • 新建:创建一个不存在的工作薄或者工作表
  • 打开:打开一个已经存在的工作薄
  • 引用:就是告诉程序,你要操作哪个对象。比如你打开了A、B、C三个工作薄,现在你想操作A工作薄,就要先引用A
  • 激活:我们可以同时打开多个工作薄,但是一次只能操作一个工作簿,我们正在操作的这个工作薄称为当前活动工作薄。

在xlwings中

  • Excel程序用App来表示,多个Excel程序集合用Apps表示;
  • 单个工作簿用Book表示,工作簿集合用Books表示;
  • 单个工作表用Sheet表示,工作表集合用Sheets表示;
  • 区域用Range表示,既可以是一个单元格,也可以是一片单元格区域。

对Excel进行操作主要使用如下三个类:

import xlwings as xw

xw.App 打开一个excel应用

xw.Book 创建一个工作薄

xw.Sheet 创建一个工作表

创建App

app=xw.App(visible=True,add_book=False)

参数visible:用来设置程序是否可见,True表示可见(默认),Flase不可见

参数add_book用来设置是否自动创建工作簿,True表示自动创建(默认),False不创建。当设置成add_book=False时,可以创建App,但是还未生成PID,只有当这个App创建了工作簿后,才会生成自己的PID 。

app.pid

即可查看创建的app的pid值。

在操作一个app对象的时候要先引用工作薄,但是引用并不代表激活,激活就是当前操作的工作薄。

wb=app.books.add()

表示在该app下创建一个工作簿。

关闭app有两种方式:

app.kill():通过杀掉进程,强制Excel app退出
 
app.quit():退出excel程序,不保存任何工作簿

工作簿Book与Books

一个app可以包含多个工作薄,创建工作薄有两种方式:

  • xw.Book()
    • 方式1是创建一个新的App,并在新App中新建一个Book
  • xw.books.add()
    • 是在当前App下新建一个Book

如果是打开一个已存在的则可以

wb = app.books.open('绝对或者相对路径的excel文件')
'或者
wb = xw.Book('绝对或者相对路径的excel文件')

激活工作簿

wb.activate()
# 如果steal_focus=True, 则把窗口显示到最上层,并且把焦点从Python切换到Excel
wb.activate(steal_focus=True)

保存工作薄:

wb.save() 
# 或者使用指定路径保存
wb.save('存储路径')

关闭工作薄:

wb.close()

需要注意的是,关闭工作簿并不会保存,所以在关闭前记得保存一下。 也可以与with语句一起使用,实现关闭资源。

工作表Sheet

新建Sheet

sht = wb.sheets.add()
# 或者
sht = wb.sheets.add('test',after='sheet2')

 参数1为工作表名称,省略的话为Excel默认名称,参数2为插入位置,可选before或者after

引用某一个Sheet,可以通过下面方式

sht = wb.sheets('sheet1') # 指定名称获取sheet工作表

sht = wb.sheets(1) # 根据序号获取

sht = xw.sheets.active #获取当前活动的工作表

 sheet对象可以调用的常用方法有:

# 清除工作表所有内容和格式
sht.clear()
# 清除工作表的所有内容但是保留原有格式
sht.clear_contents()
# 删除工作表
sht.delete()
# 自动调整行高列宽
sht.autofit('c')
# 在活动工作簿中选择
sht.select()
 

引用区域与单元格操作

在操作区域或者单元格之前,首先就要引用他们,其实就是表明你要操作的区域或者单元格是哪些。可以认为区域是多个单元格。

引用区域的方式有很多种,下面列举一下常见的引用方式:

xw.Range('A1:D4')
xw.Range((1,1), (4,4))
xw.Range(xw.Range('A1'),xw.Range('D4'))
xw.Range(xw.Range('A1:E6'),xw.Range('C3:D7'))
xw.Range('NamedRange')
app.range("A1")  # 注意是小写的range
sht.range('A1') 
xw.books['MyBook.xlsx'].sheets[0].range('A1')
sht['A1']
sht['A1:D4']
sht[0,5]
sht[:5,:5]

对区域或单元格进行操作:

  • 存储数据
# 存储单个数据
sht.range('a1').value = 'id'
# 存储单行数据
sht.range('a2').value = ['id', '姓名', '年龄']
# 存储多行数据
sht.range('a3').value = [['1', '2', '3'], ['4', '5', '6']]

存储多行数据的时候,需要是二维数组,内部的每一个数组则是一行数据

 

 最后则是这样的效果。

读取数据

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

清除与删除

# 清除range的内容
rng.clear_contents()
# 清除格式和内容
rng.clear()
# 删除
rng.delete(shift=None)

rng表示引用的区域 

有关xlwings模块的使用看下面链接

零基础学习xlwings,看这篇文章就够了_qfxietian的博客-CSDN博客_xlwingsicon-default.png?t=M666https://blog.csdn.net/qfxietian/article/details/123822358?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165969529116781432917563%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165969529116781432917563&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123822358-null-null.142^v39^pc_rank_34,185^v2^control&utm_term=xlwings&spm=1018.2226.3001.4187

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值