excel 操作之 xlwings
前言
之前有人提及了几种对 EXCEL 进行操作的库。
这次我要针对这些库给大家做一些简单的功能使用介绍。
这次是 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()
- 写入数据
- 单个单元格输入
sht.range("A1").value="A1"
- 输入行– 在 A2 输入 1,B2 输入 2
sht.range("A2").value=[1,2]
3. 输入行 -A3-A4-A5 赋值sht.range("A3").options(transpose=True).value = ["行", "行", "行"]
4. 输入表格
- 单个单元格输入
sht.range('A4').options(expand='table').value = [[1, 2], [3, 4]]
sht.range("A4:B5").value = [[1, 2], [3, 4]]
4.xlwings 读取数据
- 读取
sht.range("A1").value
sht.range("A1:A3").value
sht.range("A1:B3").value
xw.Range("A1").value