Python新手指南之如何读写旧版Excel(.xls)格式文件

张开发
2026/5/22 15:35:12 15 分钟阅读
Python新手指南之如何读写旧版Excel(.xls)格式文件
在数据处理的世界里Excel 是最常见的文件格式之一。虽然现在的标准是.xlsx基于 XML 的较新格式但在很多传统行业、旧系统导出数据或历史文档中我们仍然会频繁遇到.xls格式Excel 97-2003 工作簿。对于 Python 初学者来说处理这种“古老”的格式往往会遇到一些坑比如现代库不支持。本教程将手把手教你如何使用 Python系统化、专业地读写.xls文件。1. 准备工作环境与依赖库在开始写代码之前我们需要理解 Python 处理 Excel 的生态系统。Pandas: 这是 Python 数据分析的神器。我们将主要通过它来操作数据因为它封装了底层的复杂操作非常适合初学者。xlrd: 这是一个专门用于读取.xls文件的引擎。xlwt: 这是一个专门用于写入.xls文件的引擎。注意目前流行的openpyxl库仅支持.xlsx格式不支持.xls。因此为了处理旧格式我们必须安装xlrd和xlwt。安装步骤打开你的终端Terminal或命令提示符CMD运行以下命令安装所需的库1pipinstallpandas xlrd xlwt安装完成后我们就可以开始编写 Python 代码了。2. 读取 .xls 文件读取.xls文件最简单、最强大的方法是使用 Pandas 的read_excel函数。基础读取代码假设你有一个名为old_data.xls的文件内容如下NameAgeCityAlice25New YorkBob30London以下是读取该文件的代码123456789101112131415161718importpandas as pd# 1. 定义文件路径file_pathold_data.xlstry:# 2. 读取 Excel 文件# Pandas 会自动调用 xlrd 引擎来处理 .xls 文件dfpd.read_excel(file_path)# 3. 打印前几行数据以检查print(文件读取成功前 5 行数据如下)print(df.head())exceptFileNotFoundError:print(f错误找不到文件 {file_path})exceptException as e:print(f读取过程中发生错误{e})进阶读取技巧在实际工作中Excel 文件往往比较复杂。以下是一些常用的参数配置指定 Sheet工作表: 如果文件有多个 Sheet你可以通过名字或索引指定。指定表头: 有时候第一行不是表头。12345# 读取名为 Sheet2 的工作表且指定第 2 行索引为1作为表头df_sheet2pd.read_excel(file_path, sheet_nameSheet2, header1)# 如果文件中没有表头设置 headerNonedf_no_headerpd.read_excel(file_path, headerNone)3. 写入 .xls 文件将数据保存为.xls格式我们需要使用 Pandas 的to_excel方法。Pandas 会在后台调用xlwt库来完成这个任务。基础写入代码我们将创建一个简单的数据集并将其保存为output.xls。123456789101112131415161718192021222324importpandas as pd# 1. 创建示例数据字典格式data{员工ID: [101,102,103],姓名: [张三,李四,王五],入职年份: [2018,2020,2023]}# 2. 转换为 DataFramedf_outputpd.DataFrame(data)# 3. 定义输出文件名output_filereport_2024.xlstry:# 4. 写入文件# indexFalse 表示不把左侧的行索引号0, 1, 2...写入 Exceldf_output.to_excel(output_file, indexFalse)print(f成功将数据写入 {output_file})exceptException as e:print(f写入失败{e})写入多个 Sheet如果你需要在一个.xls文件中写入多个工作表需要使用ExcelWriter对象12345with pd.ExcelWriter(multi_sheet_report.xls, enginexlwt) as writer:df_output.to_excel(writer, sheet_name员工名单, indexFalse)df_output.to_excel(writer, sheet_name备份数据, indexFalse)print(多 Sheet 文件写入完成。)4. 常见陷阱与解决方案 (Common Pitfalls)作为初学者处理.xls时最容易遇到以下问题1. 行数限制 (The 65,536 Row Limit)问题: 当你试图写入超过 65,536 行数据到.xls文件时程序会报错。原因: 这是 Excel 97-2003 格式的物理限制。解决:首选: 将文件保存为.xlsx格式支持约 100 万行。次选: 如果必须用.xls需要将数据拆分到多个 Sheet 或多个文件中。2. 库的混淆 (xlrd vs openpyxl)问题: 报错xlrd.biffh.XLRDError: Excel xlsx file; not supported.原因: 你试图用xlrd读取.xlsx文件或者你的xlrd版本过新2.0 版本移除了对.xlsx的支持仅支持.xls。解决:读取.xls: 确保安装了xlrd。读取.xlsx: 确保安装了openpyxl。3. 编码问题问题: 读取中文内容的.xls有时会出现乱码较少见但存在。解决: 虽然 Pandas 处理得很好但如果遇到可以在read_excel中尝试添加encodingutf-8或encodinggbk参数虽然新版 Pandas 已移除此参数通常需检查源文件是否损坏。

更多文章