超级功能表格
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