1. 为什么需要处理旧版Excel (.xls)文件?
在企业数据迁移和传统系统维护场景中,我们经常会遇到2003年以前生成的.xls格式文件。这种二进制文件格式虽然已被微软淘汰,但至今仍广泛存在于财务系统、医疗档案等对格式稳定性要求极高的领域。我去年参与某银行历史数据迁移项目时,就遇到过需要解析15年前生成的贷款记录文件的情况。
与新版.xlsx采用的XML压缩格式不同,.xls文件使用BIFF(Binary Interchange File Format)编码。这种格式最大的特点是:
- 文件结构包含Workbook、Worksheet等二进制记录流
- 单元格数据以特定字节标记存储
- 最大支持65536行×256列的数据量
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心工具选型与对比
2.1 xlrd/xlwt组合方案
这对黄金搭档是处理.xls文件最经典的方案。我在处理2010年之前的财务报表时,xlrd的稳定性从未让我失望过。安装只需一行命令:
bash复制pip install xlrd==1.2.0 xlwt
实际读取示例:
python复制import xlrd
# 打开1997-2003格式的Excel文件
book = xlrd.open_workbook("legacy_data.xls")
# 获取第一个工作表
sheet = book.sheet_by_index(0)
# 读取A1单元格
cell_value = sheet.cell_value(0, 0)
写入操作需要注意格式控制:
python复制import xlwt
workbook = xlwt.Workbook(encoding='utf-8')
sheet = workbook.add_sheet('Sheet1')
# 设置字体样式
style = xlwt.XFStyle()
font = xlwt.Font()
font.bold = True
style.font = font
# 写入带样式的数据
sheet.write(0, 0, '重要数据', style)
workbook.save('output.xls')
注意:xlrd 2.0+版本已移除.xls支持,必须指定1.2.0版本
