使用xlwings导出Pandas DataFrame至Excel时遇SAFEARRAY类型错误
排查方向与解决方案
检查筛选后是否生成空DataFrame
你的df2筛选条件存在逻辑错误:(df['Color'] == 'yellow') & (df['Color'] == 'green'),一个单元格不可能同时等于两个不同的颜色值,导致df2是空DataFrame。xlwings在写入空DataFrame时,无法将其转换为SAFEARRAY要求的序列结构,直接触发报错。
处理方案:先判断DataFrame是否为空,再执行写入操作:# 写入Sheet2示例 if not df2.empty: Sheet2.range('A1').options(index=False, header=False).value = df2 else: Sheet2.range('A1').value = "无匹配数据" # 或写入空值修正变量名不一致问题
代码末尾的保存、关闭操作使用了未定义的LPLwb和LPLapp,但前面定义的是wb和app,变量名不匹配会导致后续操作失败,虽然不是当前报错的直接原因,但必须修正:wb.save() wb.close() app.quit()升级xlwings版本
旧版本xlwings在处理空DataFrame或特殊数据结构时可能存在兼容性bug,升级到最新稳定版可解决部分此类问题:pip install --upgrade xlwings手动转换数据格式后写入
如果上述方案无效,可以手动将DataFrame转换为嵌套列表,绕开xlwings内部的转换逻辑:Sheet1.range('A1').options(index=False, header=False).value = df.values.tolist()
内容的提问来源于stack exchange,提问作者Jose Daniel Rojas
相关产品推荐
相关产品推荐

