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

现有Excel工作簿生成DataFrame遇xlwt废弃报错及处理合并需求

解决pandas写入xls报错及优化Excel工作表处理流程

问题根源

你的脚本报错ValueError: No engine for filetype: 'xls',是因为xlwt包已停止维护,pandas不再默认支持用它写入.xls格式文件。而且原流程里把每个工作表存成单独.xls文件再重新读取,完全是冗余步骤,既浪费时间又容易出问题。

优化后的完整代码

直接跳过中间文件,一次性读取所有工作表到DataFrame,处理后直接合并到新工作簿:

1. 读取原工作簿的所有工作表

import pandas as pd
import time

# 读取原工作簿,直接获取所有工作表的DataFrame字典
excel_file = pd.ExcelFile('Workbook1.xlsx')
sheet_dfs = {sheet: pd.read_excel(excel_file, sheet_name=sheet) for sheet in excel_file.sheet_names}

2. 处理每个DataFrame

替换成你实际的处理逻辑,示例如下:

# 处理sheet1:移除空值
sheet_dfs['sheet1'] = sheet_dfs['sheet1'].dropna()
# 处理sheet2:新增计算列
sheet_dfs['sheet2']['new_column'] = sheet_dfs['sheet2']['old_column'] * 2
# 处理sheet3:重命名列
sheet_dfs['sheet3'] = sheet_dfs['sheet3'].rename(columns={'old_name': 'new_name'})

3. 将处理后的DataFrame写入新工作簿

# 用openpyxl引擎写入xlsx格式(需先安装:pip install openpyxl)
with pd.ExcelWriter(f"New Workbook {time.strftime('%m-%d-%Y')}.xlsx", engine='openpyxl') as writer:
    for sheet_name, df in sheet_dfs.items():
        df.to_excel(writer, sheet_name=sheet_name, index=False)

关键说明

  • 取消中间.xls文件生成步骤,直接在内存中处理DataFrame,效率更高
  • 使用openpyxl是pandas当前推荐的Excel写入引擎,适配xlsx格式,稳定性更好
  • 若确实需要生成.xls格式,可安装旧版xlrd(但不推荐,因xlrd已停止对xlsx格式的支持),优先改用xlsx格式更稳妥

内容的提问来源于stack exchange,提问作者Molly Welsh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:52:42