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

重新格式化并转换xlsx为csv——xlrd.open_workbook替代方案

解决xlrd不支持xlsx文件的替代方案

xlrd从2.0版本开始不再支持xlsx格式,下面提供两种实用的替代方案,直接替换原代码即可:

方法一:用openpyxl替代xlrd(轻量适配原逻辑)

openpyxl是专门针对xlsx格式的处理库,完全兼容你的需求,先安装依赖:

pip install openpyxl

修改后的函数代码:

import openpyxl
import csv

def xls2csv(xlsfn, csvfn, xlsx2csv=None):
    """将xlsx文件转换为csv文件(读取第一个工作表)"""
    # 以只读模式加载xlsx文件,提升大文件处理效率
    wb = openpyxl.load_workbook(xlsfn, read_only=True)
    # 获取第一个工作表(也可以用wb[wb.sheetnames[0]]明确指定)
    sh = wb.active
    with open(csvfn, 'w', newline="", encoding='utf-8') as f:   
        c = csv.writer(f)
        # 直接遍历行并获取单元格值,和原逻辑完全对齐
        for row in sh.iter_rows(values_only=True):
            c.writerow(row)
    wb.close()

方法二:用pandas快速实现(代码更简洁)

如果你的脚本允许引入pandas,这种方式代码量极少,处理大文件也更高效,先安装依赖:

pip install pandas openpyxl

修改后的函数代码:

import pandas as pd

def xls2csv(xlsfn, csvfn, xlsx2csv=None):
    """将xlsx文件转换为csv文件(读取第一个工作表)"""
    # 读取xlsx第一个工作表,保存为csv(index=False避免写入多余索引列)
    df = pd.read_excel(xlsfn, sheet_name=0)
    df.to_csv(csvfn, index=False, encoding='utf-8')

额外提示

  • 如果脚本需要同时处理.xls和.xlsx文件,可以通过判断文件后缀,分别调用xlrd(处理xls)和openpyxl/pandas(处理xlsx)
  • 加上encoding='utf-8'可以避免多数中文乱码问题,原代码未指定编码建议补上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:22:11