• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python兼容VBA的用法详解

    一、简介

    有时我们需要向含有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的用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 基于python requests selenium爬取excel vba过程解析
    • VBA处理数据与Python Pandas处理数据案例比较分析
    • VBA数组用法案例详解
    • 详解bootstrap导航栏.nav与.navbar区别
    上一篇:Python爬虫urllib和requests的区别详解
    下一篇:Python rindex()方法案例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python兼容VBA的用法详解 python,兼容,VBA,的,用法,详解,