xlwings库基本使用

🚵 前言

首先,xlwing免费开源,功能强大;pro版本商业收费,个人免费。
但是也有缺点,xlwing必须配合Excel来使用。
如果想在linux上使用,我还是推荐使用pandas或者openpyxl
xlwing配合jupyter可以交互式操作excel文档。xlwing可以像VBA宏一样操作Excel文档。可以很好的适配pandas和matplotlib

xlwing官方文档

🚵 导入库

import xlwings as xw 

🚵 打开Excel

打开Excel文件有两种方式,,一种是实例化xw.App(),另一种是你手动双击Excel文件打开(Excel通常打开方式)
两种方式都可以打开,选其一就可。

第一种方式打开Excel

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

add_book表示打开Excel的时候是否创建新的工作簿

建议这样写,避免程序出错也能关闭Excel软件

with xw.App(visible=True,add_book=False) as app: # 这样写就不用再写app.kill()了,会自动关闭Excel软件

补充: 这是我认为比较标准的方式,编写正式脚本批处理命令的时候使用这个。

第二种方式打开Excel

双击Excel文件,(emmm,这种方式应该都会吧。。。)

补充: 如果想在代码中获取xw.App对象,可以使用以下代码:

# 第一种方式:
app = xw.apps.active
# 第二种方式:
app = xw.apps[3508] # 这个3508是excel程序运行的PID,每次启动Excel都不一样可以通过xw.apps.keys()或者任务管理器查看

🚵 工作簿操作(Book)

添加工作簿

wb = app.books.add()

或者

wb = xw.Book() # 可以不用实例化xw.App()

打开工作簿

wb = app.books.open(r'F:\ab.xlsx')  # 打开
# 或者 wb = xw.Book(r'F:\ab.xlsx')

绑定工作簿

如果有多个工作簿同时打开了,想获取活动的工作簿,可以用以下代码:

# 第一种方式
wb = xw.books.active  # 使用xw接口(可以不用实例化app,但是必须有个excel开着)

# 第二种方式
app = xw.apps.active
wb = app.books.active  # 使用app接口(必须实例化app,)

# 这两种方式各有`优缺点`,第一种方式更“短”,第二种方式更规范化,灵活运用。

如果想获取多个已打开工作簿中的某一个,可以通过索引的方式

wb = xw.books[1] # 第二个工作簿赋给wb变量

# 或者
# wb =  app.books[1]

保存工作簿

前面三个部分(添加工作簿“”,“ 对已有工作簿操作”,“绑定工作簿”)是获取Book对象。程序的最后肯定是保存了,保存的时候可以选择路径。

wb.save(r'F:\aa.xlsx')  # 保存
wb.close() # 关闭

# `wb.close()`要注意一下,关闭的是工作簿,Excel软件没有关闭

🚵 关闭Excel

app.kill() # 关闭Excel软件

🚵 表操作

1.添加表

sht=wb.sheets.add("Name") 

2. 选取sheet表

sht = wb.sheets[0]  #工作表序号 sht1 = wb.sheets['Name']  #工作表名称 

🚵 单元格选择

1.单个单元格的选择:

rng = sht.range('a1')#方式1 
rng = sht['b1'] #方式2 
rng = sht[0,0]  #方式3 

注意这里的rng是“单元格”的意思,包括单元格的样式、值等等。
如果想获取单元格的值,需要调用value属性。

print(rng.value)

2.区域单元格的选择:

rng = sht.range('a1:a5')  #方式一 
rng = sht['a1:b5']   #方式二 
rng = sht[:5,0]  # 表示第一列的前五行 
sht.range('a1').expand('table')# 表示从a1单元格开始创建一个表格区域 

🚵 获取工作表列数和行数

info = sht.used_range
nrows = info.last_cell.row # 行数
ncolums=info.last_cell.column # 列数

🚵 单元格的操作

1.赋值

sht["a1"].value=

🚵 格式操作

设置单元格数据格式

sht["a1:a10"].api.NumberFormat = "@"  #设置为文本格式

sht["a1:a10"].api.NumberFormat = "0.0"  #设置为小数格式

sht["a1:a10"].api.NumberFormat = "yyyy-mm-dd"  #设置为"-"连接的日期格式

sht["a1:a10"].api.NumberFormat = "0%"  #设置为百分比

清除格式

rng.clear()
  • 2
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值