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

如何使用pandas正确读取xls文件并解决多文件合并异常

问题核心原因

代码中错误使用pd.read_csv()方法读取.xls格式的二进制Excel文件,是导致乱码、无效内容的根本原因。
pd.read_csv()仅适用于读取纯文本分隔符格式的文件(如.csv/.tsv),直接用它解析二进制结构的xls文件时,会把文件内部存储的格式样式(你看到的CSS片段就属于这类格式元数据)、二进制编码内容、文件路径信息全部当成普通文本解析,自然无法得到结构化的有效表格数据。

修复步骤
  • 安装xls格式读取依赖
    pandas读取老式xls格式需要依赖xlrd库,先在终端执行安装命令:
    pip install xlrd
    如果安装后遇到版本兼容报错,换用适配性更广的1.2.0版本即可:
    pip install xlrd==1.2.0
  • 替换读取方法,调整冗余参数
    把代码中读取文件的pd.read_csv()替换为专门读取Excel格式的pd.read_excel(),同时删除sep/encoding/on_bad_lines这些仅适用于csv读取的无效参数,保留你原本设置的header=3(即表头在第4行,索引从0开始计数)逻辑即可。
修正后可直接运行的代码
import pandas as pd
from glob import glob

# 匹配路径下所有符合命名规则的xls文件
file_list = sorted(glob(r'C:\Users\de0186619\Documents\saldo_usuario_*.xls'))

df_container = []
for file_path in file_list:
    # 按指定表头位置读取单个xls文件
    single_df = pd.read_excel(file_path, header=3)
    # 新增列标记数据来源文件,和原代码逻辑一致
    single_df['filename'] = file_path
    df_container.append(single_df)

# 纵向合并所有表格
merged_df = pd.concat(df_container, ignore_index=True)

# 打印预览结果,同时保存为本地Excel文件
print(merged_df)
merged_df.to_excel(r'C:\Users\de0186619\Documents\saldo_usuario_merged.xlsx', index=False)
补充说明

如果替换方法后依然读取异常,先手动打开一个目标xls文件确认:部分系统导出的文件会把html格式的表格直接改后缀为.xls,这类假xls文件需要针对性调整读取逻辑,但从目前输出包含CSS片段的现象判断,90%以上的概率是错误使用read_csv方法导致的,替换后即可得到保留原有结构、包含全部原始数据的合并文件。

内容的提问来源于stack exchange,提问作者Vinícius Donato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:45:31