超级功能表格

excel变成数据呈现客户端,xlwings加载项借助python api调用

云api提供服务处理

宏调用

通过按钮执行py脚本 (插入/形状/指定宏)实现美观的按钮

Sub 中文函数名()
    RunPython ("import 功能包; 功能包.读取订单()")
End Sub

脚本通过caller得到当前excel

def 读取订单():
    wb = xw.Book.caller()
    sht = wb.sheets[0]

当前选中范围

当前选中范围

wb.selection
wb.selection.row
wb.selection.column

选中内容的值

wb.selection.value  

当前使用范围

rowNum = sheet.used_range.last_cell.row
rankNum = sheet.used_range.last_cell.column

基础配置

建议用office 2013 / Anaconda3-2020.11-Windows-x86_64.exe / xlwings version: 0.20.8

office 2016(32位) / win10

office 2013(32位)/ win7

参考

安装扩展

pip install xlwings
pip install pywin32

excel加载

开发工具 excel加载项

xlwings.xlam

D:\programs\Anaconda3\pkgs\xlwings-0.20.8-py38_0\Lib\site-packages\xlwings\addin
xlwings addin install

文件>选项>信任中心>信任中心设置>宏设置

选择“启用所有并勾选”

并勾选“对VBA对象模型的信任访问

创建例子

quickstart

cd /d D:\jack\xecxel
xlwings quickstart myproject

xlsm文件和py文件同名即可

设置 xlwings插件

conda  项目目录
"CONDA PATH":"D:\programs\Anaconda3"
"CONDA ENV":"base"
"PYTHONPATH": "D:\programs\Anaconda3"

_conda --version
conda 4.9.0

代替vba

vba转python 导入import 通过按钮调用 函数

Sub 读取未关闭销售订单()
    RunPython ("import runfun; runfun.读取未关闭销售订单()")
End Sub

注册函数

@xw.func
def xxxoo

第行返回

ctrl+shift+enter 来实现多行返回

""" 
返回类型  一个二维表
@xw.ret(expand='table')
"""
import xlwings as xw
import pandas as pd

@xw.func
@xw.arg('data', pd.DataFrame,header=True)
@xw.ret(expand='table',header=False,index=False)
def jkxCopyDf(data):
    """ 拷贝df """
    return data

py打开excel

app=xw.App(visible=True,add_book=False)
filepath=r'C:\Users\Administrator\ipynb\一键excel.xlsm'
wb=app.books.open(filepath)

excel大屏

Ctrl+Shift + f1

宏定时器
Sub MyStartTimer()

Sheet1.Cells(1, 2) = Sheet1.Cells(1, 2) + 1

Application.OnTime Now + TimeValue("00:00:01"), "MyStartTimer"

End Sub