openpyxl 2.5.1调用dataframe_to_rows报错:utils无dataframe属性
解决openpyxl 2.5.1中
dataframe_to_rows导入报错的问题 这个问题我之前也碰到过,本质就是openpyxl版本差异导致的函数位置变更——你用的2.5.1版本还没把dataframe_to_rows放到openpyxl.utils.dataframe子模块里,调整下导入路径就能解决:
具体解决步骤
- 修正导入语句:
把你原来的代码:
改成:from openpyxl.utils.dataframe import dataframe_to_rowsfrom openpyxl.utils import dataframe_to_rows - 验证版本兼容性:openpyxl 2.5.1建议搭配pandas 0.23.x~0.25.x版本使用,避免因版本不匹配出现其他隐性问题。
完整可运行示例
import pandas as pd from openpyxl import Workbook from openpyxl.utils import dataframe_to_rows # 生成示例DataFrame df = pd.DataFrame({ '姓名': ['张三', '李四', '王五'], '年龄': [25, 30, 28], '城市': ['北京', '上海', '广州'] }) # 创建Excel工作簿和工作表 wb = Workbook() ws = wb.active # 将DataFrame转换为行并写入Excel # index=True保留索引列,header=True保留表头 for row in dataframe_to_rows(df, index=True, header=True): ws.append(row) # 保存文件 wb.save('导出结果.xlsx')
补充说明
如果之后你升级openpyxl到2.6及以上版本,dataframe_to_rows就会被移到openpyxl.utils.dataframe子模块下,那时你最初的导入语句就能正常使用了——这也是为什么新文档里是那个路径,但你的旧版本不支持的核心原因。
内容的提问来源于stack exchange,提问作者Lightspark




