请选择 进入手机版 | 继续访问电脑版

[python] python兼容VBA的用法详解

[复制链接]
查看53 | 回复11 | 2021-9-13 14:41:58 | 显示全部楼层 |阅读模式

一、简介

偶尔 我们必要 向含有VBA代码的Excel写入数据,但又不能影响正常的VBA代码实验 ,早先 我使用 python的openpyxl模块中函数将数据写入xlsm文件中,写入数据后发现实验 VBA代码的按钮消散 不见了,于是通过查找缘故原由 发现是由于openpyxl对VBA支持并不友爱 ,而对VBA支持友爱 是xlwings模块。

二、简单先容 下xlwings模块

在这里插入图片形貌

1、读取Excel中数据

读取需留意 点:
默认环境 下,带有数字的单元格被读取为float,带有日期单元格被读取为datetime.datetime,空单元格转化为None;数据读取可以通过option操作指定格式读取。

  1. import xlwings as xw
  2. import os
  3. #创建APP应用
  4. app=xw.App(visible=True,add_book=False) #visible表示程序运行时是否可见Excel,True表示可见,False表示不可见;add_book表示是否要新建工作簿
  5. file = "数据写入V1.xlsm"
  6. wb=app.books.open(file) #打开指定文件
  7. ws = wb.sheets["Sheet1"] #工作表引用
  8. #ws.activate()
  9. temp_value = ws["B2"].value #默认读取B2的值,为浮点型
  10. print(type(temp_value))
  11. print(temp_value)
  12. temp_n = ws["B3"].value #默认读取B3的值,这里未空值默认应显示None
  13. print(type(temp_n))
  14. print(temp_n)
  15. temp_value1 = ws["B2"].options(numbers=int).value #将B2的设置为整数
  16. print(type(temp_value1))
  17. print(temp_value1)
复制代码

#运行结果

  1. <class 'float'>
  2. 100.0
  3. <class 'NoneType'>
  4. None
  5. <class 'int'>
  6. 100
  7. >>> 
复制代码

2、另一种取值单元格值得方式

  1. import xlwings as xw
  2. import os
  3. app=xw.App(visible=True,add_book=False)
  4. file = "数据写入V1.xlsm"
  5. wb=app.books.open(file) #打开指定文件
  6. ws = wb.sheets["Sheet1"]
  7. print(ws.range('B2').value) #另一种方式读取B2的值
  8. #运行结果
  9. 100.0
复制代码

三、将数据写入Excel

在这里插入图片形貌

  1. import xlwings as xw
  2. import os
  3. #创建APP应用
  4. app=xw.App(visible=True,add_book=False)
  5. file = "数据写入V1.xlsm"
  6. wb=app.books.open(file) #打开指定文件
  7. #工作表引用
  8. ws = wb.sheets["Sheet1"]
  9. a = 6799
  10. b = 2345
  11. c = 1000
  12. info = ws.used_range
  13. #print(info)
  14. nrows = info.last_cell.row #获取sheet表中最大行
  15. print(nrows)
  16. if ws['B'+str(nrows)]==None:
  17. ws['B'+str(int(nrows)-1)].value=a
  18. ws['C'+str(int(nrows)-1)].value=b
  19. ws['D'+str(int(nrows)-1)].value=c
  20. else:
  21. ws['B'+str(int(nrows)+1)].value=a
  22. ws['C'+str(int(nrows)+1)].value=b
  23. ws['D'+str(int(nrows)+1)].value=c
  24. wb.save() #保存数据
  25. wb.close() #关闭工作簿
  26. app.quit()
复制代码

写入后

在这里插入图片形貌

到此这篇关于python兼容VBA的用法详解的文章就先容 到这了,更多干系 python兼容VBA的用法内容请搜索 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 123457018 | 2021-9-15 20:01:50 | 显示全部楼层
今天怎么了,什么人都出来了!
回复

使用道具 举报

avatar cslixiong | 2021-9-17 23:45:41 | 显示全部楼层
admin楼主该去看心理医生了!
回复

使用道具 举报

avatar 却写杂布计 | 2021-9-20 07:51:11 | 显示全部楼层
这一年啥事没干,光研究admin楼主的帖子了!
回复

使用道具 举报

avatar 寻梦敦煌 | 2021-9-20 13:09:58 | 显示全部楼层
顶一个!
回复

使用道具 举报

avatar 123457376 | 2021-9-23 13:34:56 | 显示全部楼层
雷锋做好事不留名,都写在帖子里!
回复

使用道具 举报

avatar 忆清静丫 | 2021-9-26 22:29:06 | 显示全部楼层
有节操!
回复

使用道具 举报

avatar 清风JA1 | 2021-10-3 19:05:28 | 显示全部楼层
东方不败还是灭绝师太啊?
回复

使用道具 举报

avatar 杨小公子君莫邪 | 2021-10-5 14:23:47 | 显示全部楼层
大神好强大!
回复

使用道具 举报

avatar 小太阳823 | 2021-10-9 05:32:32 | 显示全部楼层
关注一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则