您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python兼容VBA的用法详解

51自学网 2021-10-30 22:12:50
  python
这篇教程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 = 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)

#运行结果

<class 'float'>

100.0

<class 'NoneType'>

None

<class 'int'>

100

>>> 

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

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=a    ws['C'+str(int(nrows)-1)].value=b    ws['D'+str(int(nrows)-1)].value=celse:    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的用法内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


Python爬虫urllib和requests的区别详解
Python rindex()方法案例详解
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。