xlwings:python好用的excel操作模块

前言

由于月末对账需要,需要对比多个excel中的某一列数据,找出主表中某一列数据与其他几个excel表中的类似列存在的差异。本来wps有数据差异对比功能,但是需要收费,只能扣扣嗖嗖的自己写一个功能了,正好用一下xlwings

过程

1. 熟悉xlwings

xlwings是什么

xlwings是一个python模块,可以对excel进行几乎全部的操作,同时也可以替代vba,反向实现excel中调用python,来处理数据。同时支持mac和win

基础操作

  1. xlwings包含的对象与操作4个层次:App(excel程序) —> Book(excel文档) —> Sheet(文档页) —> Range(文档单元格)
    xlwings对象结构
  2. 基础操作代码示例
# 示例1
import xlwings as xw
wb = xw.Book('test.xlsx') # 如果只是打开单个文档的情况下,完全可以用xw来替代app
sheet = wb.sheets[0]
a1 = sheet.range('A1').value
# 示例2
import xlwings as xw
app = xw.App()
book = app.books.open('test.xlsx')
sheet = app.books['test.xlsx'].sheets[0]
# 选择第一个单元格
range_obj = sheet.range('A1')
# 选取第一列
range_obj = sheet.range('A1').expand('down')
# 选取第一行
range_obj = sheet.range('A1').expand('right')
# 选取表格
range_obj = sheet.range('A1').expand('table')
# range的总行数
rows_count = range_obj.rows.count
# range的第一行行标
row_index = range_obj.row
# 返回range的列数
columns_count = range_obj.columns.count
# range的第一列列标
column_index = range_obj.column
# 设置range的颜色
range_obj.color=(255,255,255)
# 清除range的背景色
range_obj.color=None
# 获取公式或者输入公式
range_obj.formula='=SUM(B1:B5)'
# 存储单个数据
range_obj.value=666
# 横向存储多个数据
sheet_obj.range('A1').value=[1,2,3]  #等同sheet_obj.range('a1:c1').value = [1,2,3]
#纵向存储多个数据
sheet_obj.range('A1').options(transpose=True).value=[1,2,3]
#直接存储多维数据
# 将2x2表格,储存在A1:B2中,如第一行1,2,第二行3,4
sheet_obj.range('A1').options(expand='table').value=[[1,2],[3,4]] 
# 同上
sheet_obj.range('A1').expand('table').value = [[1,2],[3,4]]
# 读取数据的方法一致,为赋值左侧方法

2. 遇到问题

excel版本过低,无法完全自动化。由于环境(windows,安装的excel版本非常老旧,有些格式支持差,还报错,需要人为介入,效率低),平时主力使用的几乎都是wps,所以打算直接调用wps

3. 解决问题

  1. 先百度了一下,发现有不少解决方案,很多都是直接改库的源代码,尝试了下,是完全没有问题的。但是总觉得这种方案不可持续,说不定哪天更新了模块,又要去改回来
  2. 再仔细搜索,发现了一个外部引入,不需要修改源代码的方案:python使用xlwings操作wps
# 运行程序前,传入自定义的impl就可以了
_xl = COMRetryObjectWrapper(DispatchEx("ket.Application")) # 标识用wps运行
impl = xw._xlwindows.App(add_book=False, xl=_xl)
app = xw.App(visible=False, add_book=False, impl=impl) # visible可以控制是否展示wps

总结

xlwings,操作excel超级简单。使用打开文档的方案操作excel文档,程序退出后,会自动保存修改,无需特别操作

参考与扩展

  1. xlwings
  2. xlwings官方文档-英文
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

a敏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值