You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xlwings中以句柄形式返回DataFrame(类PyXLL实现)

在Xlwings中实现返回DataFrame句柄的功能

Xlwings支持返回DataFrame句柄的功能,核心是通过@xw.ret(as_object=True)装饰器启用对象缓存机制,让函数返回对象的标识句柄而非直接展开数据到Excel中,和PyXLL的句柄逻辑一致。

修改你的代码如下:

import xlwings as xw
import pandas as pd

@xw.func
@xw.ret(as_object=True)  # 启用对象缓存,返回句柄
def create_df():
    data = {'Name': ['Tom', 'nick', 'krish', 'jack'], 
            'Age': [20, 21, 19, 18]} 
    df = pd.DataFrame(data) 
    return df 

使用说明

  1. 在Excel单元格中调用=create_df(),单元格会显示类似<pandas.core.frame.DataFrame object at 0x...>的字符串,这就是缓存的DataFrame对应的句柄。
  2. 你可以编写其他函数接收这个句柄,直接操作对应的DataFrame对象。比如获取DataFrame的行数:
@xw.func
def get_df_row_count(df_handle):
    # 直接接收句柄指向的DataFrame对象
    return len(df_handle)

在Excel中调用=get_df_row_count(A1)(假设A1是存放句柄的单元格),即可返回该DataFrame的行数。

这种方式下,DataFrame数据会保存在Python进程的缓存中,Excel仅存储对象句柄,不会自动展开显示整个数据集,完全符合你需要的PyXLL同类函数的效果。

内容的提问来源于stack exchange,提问作者Dave Lui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:02:06