python操作excel进阶

xlwings的介绍

  • xlwings是python的一个第三方库,使用python调用它可以进行excel的操作,使我们的工作效率大大提高,虽然使用vba也是可以的,但却没有xlwings灵活,vba中的库也没有xlwings多。
  • xlwings能够方便的读写excel文件中的数据,并且能够进行单元格格式的修改。

xlwings的基本操作

建立excel表的连接

  • 在建立连接的时候会直接打开工作簿
wb=xw.Book('./datas/薪资表.xlsx')

获取工作表更改数据

import xlwings as xw
wb=xw.Book('./datas/薪资表.xlsx') # 相对路径
sht = wb.sheets["sheet1"] #原工作表名称不区分大小写
print(sht.range("A1").value) # 获取A1数据
sht.range("A1").value=sht.range("A1").value+'00' # 修改A1的数据
sht.range("B6:E10").value # 选取某个区域
listvalue=['张三','男','35','销售部']
sht.range("B6:E6").value=listvalue # 给区域赋值

保存工作簿,并关闭工作表

wb.save('./datas/薪资表.xlsx')
wb.close()

xw.App使用

通过App方法修改原工作表

import xlwings as xw  # 导入库

app = xw.App(visible=True, add_book=False) #visible表示实例是否可见 add_book表示是否增加工作表
# 打开工作簿
workbook = app.books.open(r".\薪资表.xlsx")
# 打开工作表
sht = workbook.sheets["sheet1"]
# 写入数据
newvalue = sht.range("B6:E10").value
listvalue = ['小张2', '男1', 29, '销售部经理']
sht.range("B6:E6").value = listvalue
workbook.save()
workbook.close()
app.quit()

在原工作簿中添加新表格

  • 创建新表格
  • 在表格中添加数据
import xlwings as xw

app = xw.App(visible=True, add_book=False)
# 打开工作簿
workbook = app.books.open(r'./薪资表.xlsx')
# 打开原来工作表
sht = workbook.sheets['sheet1']
# 添加新的工作表,也可以添加多个工作表
new_sht = workbook.sheets.add("奖金01")
new_sht.range('A1').value = "奖金职工"
for m in workbook.sheets:
    if m.name == "奖金":
        m.range("A1").value = "奖金10000"
print(workbook.sheets[0])
# 进行最后的关闭与保存
workbook.save()
workbook.close()
app.quit()

Xlwings的应用

使用xlwings从工作簿中获取数据并保存在新生成的sheet中

  • 思路分析:使用xlwings筛选数据一般要使用以下不揍
    • 创建实例应用
    • 打开工作簿
    • 创建工作表
    • 帅选并添加数据
    • 保存数据
import xlwings as xw

# 1.创建实例应用
app = xw.App(visible=True, add_book=False)

# 2.打开工作簿
wb = app.books.open(r"./华为奖励表.xlsx")
sheets_list = wb.sheets
# 3.创建工作表
pat = input('请输入省份名称')
sht_excel = wb.sheets.add(pat)
# 4.帅选并添加数据
range_value_list = []


def Add_excel(excel):
    for i in range(2, 100):
        str_sheet = "E" + str(i)
        global str_sheet1
        str_sheet1 = "A" + str(i) + ":" + "E" + str(i)

        str_value_sheet = excel.range(str_sheet).value
        if str_value_sheet == pat:
            str_value_row = excel.range(str_sheet1).value
            range_value_list.append(str_value_row)


for excel in sheets_list:
    Add_excel(excel)

m = 2
for i in range_value_list:
    str_sheet1 = "A" + str(m) + ":" + "E" + str(m)
    sht_excel.range(str_sheet1).value = i
    m += 1
# 5.保存数据
wb.save(r"./华为奖励表.xlsx")
wb.close()
app.quit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值