python处理数据之xlwings库



xlwings

xlwings和openpyxl类似,都是python操作excel的常用库。


基本结构

img


创建一个app

import xlwings as xw

# visuble----创建一个app,将他展示出来
# add_book---创建app时,是否创建一个工作簿
app = xw.App(visible=True,add_book=False)

app是xlwings的一个对象,可以利用在这个对象中,打开或者创建一个excel文件。


创建/打开一个books

wb = app.books.open('test.xlsx')
# 打开一个excel文件

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

创建/打开一个sheet及相关操作

sheet1 = wb.sheets[0]
# 选择第一个sheet工作表

wb.sheets.add("sheet2")
wb.sheets.add(name=None, before=None, after=None)
# 创建一个sheet2工作表,before--在哪个表之前,after--在哪个表之后

wb.sheets["sheet2"].delete()
# 删除一个工作表

wb.sheets['Sheet1'].name
wb.sheets[0].name
# 查看Sheet1的名字

wb.sheets[0].name = 'test'
# 修改sheet第一个的工作表名字

wb.sheets[0].clear()
# 清除整张表的内容和格式

wb.sheets.active
# 查看当前活跃的工作表

wb.sheets[0].activate()
# 激活指定的sheet


xlwings处理数据


获取数据
sheet = wb.sheets[0]

sheet.range('a2').value
sheet.range((1,2)).value
sheet['a2'].value
# 单元格A2的值

sheet.range('a1:b2').value
sheet.range((1,1),(2,2)).value
sheet['a1:b2'].value
# 单元格A1:B2范围的值


写入数据
sheet['a1'].value = 10
# 在A1单元格中写入10

sheet['a1'].value = [1, 2, 3]
# 从A1开始横向填入数据[1, 2, 3]

sheet['a1'].options(transpose=True).value = [1, 2, 3]
# 从A1开始纵向填入数据[1, 2, 3]

sheet['b2'].value = [[1,2],[4,5]]
sheet['b2'].options(expand='table').value = [[1,2],[4,5]]
# 从B2开始填入表格


动态获取范围
sheet['a1'].expand()
sheet['a1'].expand('table')
sheet['a1'].options(expand='table').value

使用expand()了一个名为Range在一起,左上角的单元格让你在Excel中灵活的设置:您可以左右移动的桌子和改变它的大小,而无需使用类似调整你的代码,例如sheet.range('NamedRange').expand().value



numpy数组
import numpy as np

sheet['A5'].value = np.eye(4)
sheet.range('A5').options(np.array, expand='table').value

输出:

array([[ 1.,  0.,  0.],
    [ 0.,  1.,  0.],
    [ 0.,  0.,  1.]])


pandas数据框
import pandas as pd

df = pd.DataFrame([[1.1, 2.2], [3.3, None]], columns=['one', 'two'])
sheet['A10'].value = df
sheet['A10:C12'].options(pd.DataFrame).value

输出:

​ one two

0.0 1.1 2.2
1.0 3.3 NaN

sheet.range('A15').options(index=False, header=False).value = df
# 将行标题和索引忽略,指保存数据

在将列表,NumPy数组或Pandas DataFrame写入Excel时,只需要指定左上角的单元格即可,例如: sheet.range('A1').value = np.eye(10)



xlwings保存数据

wb.save('test2.xlsx')
# 另存为test2.xlsx

wb.close()
app.quit()
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力生活的黄先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值