Linux下读取特殊格式Excel 97-2003 XLS文件的解决方案求助
Linux下读取非标准BOF头XLS文件的解决方案
你的问题核心是:文件后缀为XLS,但并非标准的BIFF格式(BOF头与常规XLS不符),Excel能通过兼容逻辑解析,但xlrd不支持这种格式。Linux下可以通过以下方式解决:
方法一:使用LibreOffice无头模式转换(推荐)
LibreOffice Calc支持解析这类Excel兼容的非标准格式,通过无头模式可在无界面的Linux环境下完成格式转换:
安装LibreOffice Calc:
- Ubuntu/Debian发行版:
sudo apt update && sudo apt install libreoffice-calc - CentOS/RHEL发行版:
sudo yum install libreoffice-calc
- Ubuntu/Debian发行版:
命令行转换为XLSX格式:
libreoffice --headless --convert-to xlsx my_file.xls执行后会在同目录生成
my_file.xlsx文件。用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
相关产品推荐
相关产品推荐

