python操作excel_Python操作EXCEL 之 对比vba学习xlwings

很久之前就想学习个关于python操作Excel文件的模块,虽然个人觉得处理EXCEL方面vba目前仍然是适合的,但是Python在处理数组上的强大(方便),以及在其它文件的操作上比vba强大不是一点两点,代码方面也要轻松简捷不少。只是由于个人各种原因给忽略了。直到遇到了Xlwings这个传说中跟VBA长的很像的模块出现。不是说其它处理EXCEL的模块功能不好,不好学习,或者什么原因(我也压根没仔细了解过),一个是缘分吧,另外一个是我除了C 这个在学校里面学过以外,就数Vba这个最熟悉了。既然碰到对的,就赶紧学起来。

25d5f7779873338a3ee6e5e709e70d0b.png 上面这个图基本上介绍xlwings 基础的文章都会出现,app 相当于我们EXCEL 程序,book 就是工作簿,sheet 是工作表,range 单元格。(好像xlwings原来的版本工作簿也是用的workbook,好像后面更新修改得更简捷了),光看这里,是不是觉得就很相似了?

再粗略地对比了一下xlwings 和vba对EXCEL的一些操作。

Xlwings

vba

打开EXCEL程序

import xlwings as xw

app = xw.App(visible=False)

窗口提示关闭

app.display_alerts = False 

Application.DisplayAlerts = False

屏幕更新关闭

app.screen_updating = False 

Application.ScreenUpdating = False

版本信息

xw.App().version

application.Version

工作簿

新建工作簿

wb = app.books.add()

Set wb = Application.Workbooks.Add

保存工作簿

wb.save(r'D:\test.xlsx')

wb.SaveAs ("test.xlsx")

关闭工作簿

wb.close()

wb.Close

打开已有工作簿

wb = xw.Book(r'D:\test.xlsx')

Set wb = Application.Workbooks.Open("test.xlsx")

工作表

第一个工作表

sht = wb.sheets[0]
sht = wb.sheets['Sheet1']

set sht= wb.sheets(1)
set sht= wb.sheets("Sheet1")

单元格

一个单元格

sht.range('A1').value = 'abc'
sht[1,1].value = 'aaa'
sht['A1'].value = 'cba'
sht.range(2,3).value = 'cba'

sht.range('A1').value = 'abc'
sht.cells(1,1).value="aaa"

连续单元格

sht.range((1,1),(3,3)).value='c'sht[1:5,1:5].value = 'bb'   
sht.range('B2:D5').value = 123

sht.Range("a1:b4").Value = 1

按行输入列表

sht.range('A1').value = [1,2,3] 

sht.range("a1:c1").value=(1,2,3)

按列输入列表

sht.range('A1').options(transpose=True).value = [1,2,3]

arr = Array(1, 35, 2)
sht.Range("a1:a3").Value = Application.Transpose(arr)

读取

arr = sht.range('B2:D5').value
rng = sht.Range((1,1),(3,3))

arr= sht.range('B2:D5').value
rng = sht.range(cells(1,1),cells(3,3))

填充颜色

sht[2,2].color=(146, 208, 80)

Range("d25").Interior.Color= RGB(146, 208, 80)

最后一个非空单元格

row1= sht.range('A50').end('up').row

row1=range("a50").end(xlup).row

 

由上面的表可以看到,xlwings其实函数的很多设置上跟vba近乎一致,只是又加入了一些python的风格,另外在此基础上又做了简化。下面再介绍一下,学习过程中碰到的一些需要注意的地方:

一、函数首字母的大小写

在使用xlwings的时候,函数的大小写是有严格要求的,如App、apps、Book、book、Range、range等首字母的大小写不一样,代表的函数功能是不一样的,这里大写不能用小写来代替,否则会提示找不到相关函数,或者得到不一样的结果。这个与我们VBA就不一样,vba的函数是不区分大小写的。

二、打开Excel程序。
import xlwings as xw     #导入模块app =xw.App(visible=False,book_add=False)     app.quit()     #退出EXCLEL软件

 visible=False程序不可见,你已经打开了文件,但是EXCEL窗口不显示出来。book_add=False不新建工作表。

三、对象操作习惯    由我们一开始看到的xlwings的基本对象的图片,按我们正常的理解,我们需要操作工作簿,应该是通过app来打开,我们需要操作单元格,应该是取某个工作簿的工作表的某个range。在vba中,如果没有特殊指定的情况下,我们可以跳过workbook和sheet,直接用range就行了。看上面的对照表,我们可以发现,xlwings在对象这里的要求也不严格。比如说我们可以跳开app,直接通过Book打开工作簿。A、
app =xw.App(visible=False,add_book=False)    wb =xw.Book(r'D:\test.xlsx')
B、
app =xw.App(visible=False,add_book=False)wb2=app.books.open(r'D:\test.xlsx')
1、这两句的打开效果是一样的。当然这里A如果不执行app这一行,直接用Book打开的话,那效果可能就不一样了,可能会有多个EXCEL程序出现。2、app.books.open 是在app = xw.App(visible=False)执行后才可以执行的,但是xw.App.books.open是不可以执行的。两个的属性是一样的。具体原因还没学习上,有兴趣的可以自行了解下。我的理解是在赋值前和赋值后,两个对象已经是完全不一样的东西了,那他们的属性当然也就不一样了(有点牵强是吧,聊胜于无呗)。 四、编号及列号

1、  在引用工作表的时候,Xlwings与vba都可以按表的编号和表名来引用,但不一样的是,xw的工作表编号是从0开始的,而vba是从1开始的。当然,单元格的编号表示就不存在这样的情况了,大家都是从1开始的。

2、  range(“a”&n),在Vba中,n必须是数值。但是,在xlwings中,n必须是一个字符串,所以如果n是数值的话,还需要进行转换,str(n)。

五、Numpy

聊到数组,必须提一下numpy,由numpy产生的数组,可以直接的赋值输入到EXCEL当中。Pandas 也是可以的,只不过还没有认真学习过这模块这里就不提了。

import numpy as nparr=np.random.random((3,3))sht.range('A1').value=arr
 

除了以上提到的这些,xlwings还有很多其他的函数,后面我们可以用python的dir(),和help(),再了解一下模块都有哪些函数,根据已经看到过的文档,以及python的一些函数使用习惯,看看帮助文档里面有没有例子,逐个自行学习,补充。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想学习如何使用Python处理Excel文件,有几个库可以帮助你实现这个目标。其中一些库包括xlrd、xlwt、xlutils、xlwings、openpyxl、xlswriter、win32com和pandas。\[2\]这些库提供了不同的功能和特点,你可以根据自己的需求选择适合的库进行学习和使用。 如果你想学习如何读取和操作Excel文件,你可以使用xlrd库。它提供了读取Excel文件中数据的功能,可以帮助你获取Excel文件中的单元格数据、行和列等信息。\[2\] 如果你想学习如何写入和修改Excel文件,你可以使用xlwt和xlutils库。xlwt库可以帮助你创建和写入Excel文件,而xlutils库可以帮助你修改已有的Excel文件。\[1\] 如果你想学习如何进行更高级的Excel操作,比如修改单元格格式、连接matplotlib和pandas、调用VBA程序等,你可以考虑使用xlwings库。它提供了更多的功能和灵活性,可以满足更复杂的需求。\[3\] 另外,openpyxl、xlswriter、win32com和pandas也是常用的处理Excel文件的库,它们各自有自己的特点和用途。你可以根据具体的需求选择适合的库进行学习和使用。 总之,学习如何使用Python处理Excel文件可以帮助你更高效地进行数据处理和分析。你可以选择适合自己需求的库进行学习,并根据实际情况选择合适的方法和技巧来处理Excel文件。 #### 引用[.reference_title] - *1* *2* *3* [Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!](https://blog.csdn.net/u014779536/article/details/108182833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值