新闻动态

python兼容VBA的用法详解

发布日期:2022-01-05 18:34 | 文章来源:源码之家

一、简介

有时我们需要向含有VBA代码的Excel写入数据,但又不能影响正常的VBA代码执行,起初我使用python的openpyxl模块中函数将数据写入xlsm文件中,写入数据后发现执行VBA代码的按钮消失不见了,于是通过查找原因发现是由于openpyxl对VBA支持并不友好,而对VBA支持友好是xlwings模块。

二、简单介绍下xlwings模块

1、读取Excel中数据

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

import xlwings as xw
import os
#创建APP应用
app=xw.App(visible=True,add_book=False) #visible表示程序运行时是否可见Excel,True表示可见,False表示不可见;add_book表示是否要新建工作簿
file = "数据写入V1.xlsm"
wb=app.books.open(file)  #打开指定文件

ws = wb.sheets["Sheet1"] #工作表引用
#ws.activate()
temp_value = ws["B2"].value #默认读取B2的值,为浮点型
print(type(temp_value))
print(temp_value)
temp_n = ws["B3"].value  #默认读取B3的值,这里未空值默认应显示None
print(type(temp_n))
print(temp_n)
temp_value1 = ws["B2"].options(numbers=int).value#将B2的设置为整数
print(type(temp_value1))
print(temp_value1)

#运行结果

<class 'float'>

100.0

<class 'NoneType'>

None

<class 'int'>

100

>>> 

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

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

三、将数据写入Excel

import xlwings as xw
import os
#创建APP应用
app=xw.App(visible=True,add_book=False) 
file = "数据写入V1.xlsm"
wb=app.books.open(file) #打开指定文件
#工作表引用
ws = wb.sheets["Sheet1"]
a = 6799
b = 2345
c = 1000
info = ws.used_range
#print(info)
nrows = info.last_cell.row #获取sheet表中最大行
print(nrows)
if ws['B'+str(nrows)]==None:
 ws['B'+str(int(nrows)-1)].value=a
 ws['C'+str(int(nrows)-1)].value=b
 ws['D'+str(int(nrows)-1)].value=c
else:
 ws['B'+str(int(nrows)+1)].value=a
 ws['C'+str(int(nrows)+1)].value=b
 ws['D'+str(int(nrows)+1)].value=c
 
wb.save()#保存数据
wb.close()  #关闭工作簿
app.quit() 

写入后

到此这篇关于python兼容VBA的用法详解的文章就介绍到这了,更多相关python兼容VBA的用法内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部