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

Linux下读取特殊格式Excel 97-2003 XLS文件的解决方案求助

Linux下读取非标准BOF头XLS文件的解决方案

你的问题核心是:文件后缀为XLS,但并非标准的BIFF格式(BOF头与常规XLS不符),Excel能通过兼容逻辑解析,但xlrd不支持这种格式。Linux下可以通过以下方式解决:

方法一:使用LibreOffice无头模式转换(推荐)

LibreOffice Calc支持解析这类Excel兼容的非标准格式,通过无头模式可在无界面的Linux环境下完成格式转换:

  1. 安装LibreOffice Calc:

    • Ubuntu/Debian发行版:
      sudo apt update && sudo apt install libreoffice-calc
      
    • CentOS/RHEL发行版:
      sudo yum install libreoffice-calc
      
  2. 命令行转换为XLSX格式:

    libreoffice --headless --convert-to xlsx my_file.xls
    

    执行后会在同目录生成my_file.xlsx文件。

  3. 用pandas读取转换后的文件:

    import pandas as pd
    df = pd.read_excel('my_file.xlsx', engine='openpyxl')
    

方法二:Python脚本内集成转换逻辑

如果需要在Python代码中直接完成转换,可使用subprocess模块调用LibreOffice命令:

import subprocess
import pandas as pd

# 执行格式转换
try:
    subprocess.run(
        ['libreoffice', '--headless', '--convert-to', 'xlsx', 'my_file.xls'],
        check=True,
        stdout=subprocess.DEVNULL,
        stderr=subprocess.DEVNULL
    )
except subprocess.CalledProcessError as e:
    raise RuntimeError("文件转换失败") from e

# 读取转换后的XLSX文件
df = pd.read_excel('my_file.xlsx', engine='openpyxl')

补充说明

  • 确保LibreOffice版本≥6.0,避免旧版本兼容性问题;
  • 若转换失败,可尝试添加--invisible参数,或检查文件读写权限;
  • 也可使用unoconv工具(基于LibreOffice),安装后执行unoconv -f xlsx my_file.xls即可完成转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:08:17