python兼容VBA的用法详解
一、简介
有时我们需要向含有VBA代码的Excel写入数据,但又不能影响正常的VBA代码执行,起初我使用python的openpyxl模块中函数将数据写入xlsm文件中,写入数据后发现执行VBA代码的按钮消失不见了,于是通过查找原因发现是由于openpyxl对VBA支持并不友好,而对VBA支持友好是xlwings模块。
二、简单介绍下xlwings模块
文章图片
1、读取Excel中数据
读取需注意点:
默认情况下,带有数字的单元格被读取为float,带有日期单元格被读取为datetime.datetime,空单元格转化为None;数据读取可以通过option操作指定格式读取。
import xlwings as xwimport 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 = https://www.it610.com/article/ws["B2"].value#默认读取B2的值,为浮点型print(type(temp_value))print(temp_value)temp_n = ws["B3"].value#默认读取B3的值,这里未空值默认应显示Noneprint(type(temp_n))print(temp_n)temp_value1 = ws["B2"].options(numbers=int).value#将B2的设置为整数print(type(temp_value1))print(temp_value1)
#运行结果
【python兼容VBA的用法详解】2、另一种取值单元格值得方式
100.0
None
100
>>>
import xlwings as xwimport osapp=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 xwimport os#创建APP应用app=xw.App(visible=True,add_book=False)file = "数据写入V1.xlsm"wb=app.books.open(file)#打开指定文件#工作表引用ws = wb.sheets["Sheet1"]a = 6799b = 2345c = 1000info = 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=https://www.it610.com/article/aws['C'+str(int(nrows)-1)].value=https://www.it610.com/article/bws['D'+str(int(nrows)-1)].value=https://www.it610.com/article/celse:ws['B'+str(int(nrows)+1)].value=https://www.it610.com/article/aws['C'+str(int(nrows)+1)].value=https://www.it610.com/article/bws['D'+str(int(nrows)+1)].value=https://www.it610.com/article/cwb.save()#保存数据wb.close()#关闭工作簿app.quit()
写入后
文章图片
到此这篇关于python兼容VBA的用法详解的文章就介绍到这了,更多相关python兼容VBA的用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- Python|Python 9.20