excel 操作之 xlwings

前言

之前有人提及了几种对 EXCEL 进行操作的库。excel 操作之 xlwings

这次我要针对这些库给大家做一些简单的功能使用介绍。
这次是 xlwings 的使用。
* xlwings 官方文档

大家电脑上没有 xlwings 的,可以 pip install xlwings 安装一下这个库。

1.xlwings 打开 - 新建

  • 打开 excel 文件
  • 多个 excel 操作
import time 
import xlwings as xw

"""
visible
Ture:可见excel
False:不可见excel

add_book
True:打开excel并且新建工作簿
False:不新建工作簿
"""
app = xw.App(visible=True, add_book=False)  #设定excel是否可见,是否新建工作簿

wb = app.books.open('./a.xlsx')
wb2 = app.books.open("./b.xlsx")

# 打印当前活跃的books-<Book [b.xlsx]>
print(app.books.active)

# 打印当前的book-Books([<Book [a.xlsx]>, <Book [b.xlsx]>])
print(app.books)

wb.save()

# 关闭a.xlsx文件-指定操作的excel
# wb.close()
app.books[0].close()

time.sleep(3)
app.quit()

  • 新建 excel 文件
import xlwings as xw

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

# 添加一个新的工作薄
wb = app.books.add()

# 保存文件
wb.save('./a2.xlsx')
wb.close()
app.quit()

2. xlwings sheet-api

  • 新建 sheet
    wb.sheets.add("sheet2")
  • 删除 sheet
    wb.sheets["sheet2"].delete()
  • 查看当前表格名
    wb.sheets[1].name
  • 重命名表格 sheet
    wb.sheets[1].name=“abc”
  • 清空整张表格的内容和格式
    wb.sheets[1].clear()
  • 查看当前活跃的 sheet
    wb.sheets.active
    sh = wb.sheets.active
    sh.range("A1").value="A1"
  • 激活指定的 sheet
    wb.sheets["sheet1"].activate()

3. xlwings 操作数据

  • 引用单元格
import xlwings as xw
import time

app = xw.App(visible=True, add_book=False)
wb = app.books.open("./a.xlsx")
sht = wb.sheets["sheet1"]
# TODO 待输入-见下面示例

# A1 单元格
wb.sheets["sheet1"].range("A1")

# A2 单元格
sht.range("A2")

# A3单元格-xw-当前活跃的app-book-sheet
xw.Range("A3")

# A4单元格
rng_a4 = sht["A4"]

# A1:B3 单元格
rng_a1_b3 = sht["A1:B3"]
rng_a1_b3_2 = sht.range("A1:B3")
xw.Range((1, 1), (3, 2))

# C1单元格
rng_c1 = sht[0, 2]

time.sleep(3)
wb.save()
wb.close()
app.quit()
  • 写入数据
    1. 单个单元格输入
      sht.range("A1").value="A1"
      excel 操作之 xlwings
    2. 输入行– 在 A2 输入 1,B2 输入 2
      sht.range("A2").value=[1,2]
      excel 操作之 xlwings
      3. 输入行 -A3-A4-A5 赋值
      sht.range("A3").options(transpose=True).value = ["行", "行", "行"]
      excel 操作之 xlwings
      4. 输入表格
       sht.range('A4').options(expand='table').value =  [[1,  2],  [3,  4]] 
       sht.range("A4:B5").value =  [[1,  2],  [3,  4]]

excel 操作之 xlwings

4.xlwings 读取数据

  • 读取
sht.range("A1").value
sht.range("A1:A3").value
sht.range("A1:B3").value
xw.Range("A1").value