xlwings库基本使用

目录

  • 前言
  • 导入库
  • 打开Excel
    • 第一种方式打开Excel
    • 第二种方式打开Excel
  • 工作簿操作(Book)
    • 添加工作簿
    • 打开工作簿
    • 绑定工作簿
    • 保存工作簿
  • 关闭Excel
  • 表操作
    • 1.添加表
    • 2. 选取sheet表
  • 单元格选择
    • 1.单个单元格的选择:
    • 2.区域单元格的选择:
  • 获取工作表列数和行数
  • 单元格的操作
    • 1.赋值
  • 格式操作
    • 设置单元格数据格式
    • 清除格式

前言

首先,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 

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()

你可能感兴趣的:(实用,python,python,xlwings,数据分析)