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

Written by

in

文章目录
  • 在开始写代码之前,我们需要理解 Python 处理 Excel 的生态系统。 Pandas: 这是 Python 数据分析的神器。我们将主要通过它来操作数据,因为它封装了底层的复杂操作,非常适合初学者。 xlrd: 这是一个专门用于读取 .xls 文件的引擎。 xlwt: 这是一个专门用于写入 .xls 文件的引擎。 注意:目前流行的 openpyxl 库仅支持 .xlsx 格式,不支持 .xls。因此,为了处理旧格式,我们必须安装 xlrd 和 xlwt。
  • 读取 .xls 文件最简单、最强大的方法是使用 Pandas 的 read_excel 函数。
  • 将数据保存为 .xls 格式,我们需要使用 Pandas 的 to_excel 方法。Pandas 会在后台调用 xlwt 库来完成这个任务。
  • 作为初学者,处理 .xls 时最容易遇到以下问题:
  • 处理旧版 Excel 文件是数据分析师的基本功。以下是本次教程的核心要点回顾: 读取: 使用 pandas.read_excel('file.xls'),底层依赖 xlrd。 写入: 使用 df.to_excel('file.xls'),底层依赖 xlwt。 注意: 牢记 .xls 格式有 65536 行的行数限制。 给初学者的最终建议:除非工作环境强制要求使用 .xls,否则在生成新文件时,强烈建议使用现代的 .xlsx 格式。它体积更小、更安全、且支持更多的数据量。 到此这篇关于Python新手指南之如何读写旧版Excel(.xls)格式文件的文章就介绍到这了,更多相关Python读写旧版Excel文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 如何在python中使用openpyxl库读写Excel.xlsx文件(有参考列程) python操作excel之openpyxl模块读写xlsx格式使用方法详解 Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣) Python读写Excel大数据文件的3种有效方式对比 Python如何使用xlrd和xlwt库读写excel文件 python如何通过openpyxl读写Excel文件 Python读写Excel文件库的实现示例 python使用pandas读写excel文件的方法实例
  • 目录
    • 1. 准备工作:环境与依赖库
      • 安装步骤
    • 2. 读取 .xls 文件
      • 基础读取代码
      • 进阶读取技巧
    • 3. 写入 .xls 文件
      • 基础写入代码
      • 写入多个 Sheet
    • 4. 常见陷阱与解决方案 (Common Pitfalls)
      • 1. 行数限制 (The 65,536 Row Limit)
      • 2. 库的混淆 (xlrd vs openpyxl)
      • 3. 编码问题
    • 5. 总结与建议

      在数据处理的世界里,Excel 是最常见的文件格式之一。虽然现在的标准是 .xlsx(基于 XML 的较新格式),但在很多传统行业、旧系统导出数据或历史文档中,我们仍然会频繁遇到 .xls 格式(Excel 97-2003 工作簿)。

      对于 Python 初学者来说,处理这种“古老”的格式往往会遇到一些坑(比如现代库不支持)。本教程将手把手教你如何使用 Python 系统化、专业地读写 .xls 文件。

      在开始写代码之前,我们需要理解 Python 处理 Excel 的生态系统。

      • Pandas: 这是 Python 数据分析的神器。我们将主要通过它来操作数据,因为它封装了底层的复杂操作,非常适合初学者。
      • xlrd: 这是一个专门用于读取 .xls 文件的引擎。
      • xlwt: 这是一个专门用于写入 .xls 文件的引擎。

      注意:目前流行的 openpyxl 库仅支持 .xlsx 格式,不支持 .xls。因此,为了处理旧格式,我们必须安装 xlrdxlwt

      打开你的终端(Terminal)或命令提示符(CMD),运行以下命令安装所需的库:

      pip install pandas xlrd xlwt
      

      安装完成后,我们就可以开始编写 Python 代码了。

      读取 .xls 文件最简单、最强大的方法是使用 Pandas 的 read_excel 函数。

      假设你有一个名为 old_data.xls 的文件,内容如下:

      Name Age City
      Alice 25 New York
      Bob 30 London

      以下是读取该文件的代码:

      import pandas as pd
      
      # 1. 定义文件路径
      file_path = 'old_data.xls'
      
      try:
          # 2. 读取 Excel 文件
          # Pandas 会自动调用 xlrd 引擎来处理 .xls 文件
          df = pd.read_excel(file_path)
      
          # 3. 打印前几行数据以检查
          print("文件读取成功!前 5 行数据如下:")
          print(df.head())
      
      except FileNotFoundError:
          print(f"错误:找不到文件 {file_path}")
      except Exception as e:
          print(f"读取过程中发生错误:{e}")
      

      在实际工作中,Excel 文件往往比较复杂。以下是一些常用的参数配置:

      • 指定 Sheet(工作表): 如果文件有多个 Sheet,你可以通过名字或索引指定。
      • 指定表头: 有时候第一行不是表头。
      # 读取名为 "Sheet2" 的工作表,且指定第 2 行(索引为1)作为表头
      df_sheet2 = pd.read_excel(file_path, sheet_name='Sheet2', header=1)
      
      # 如果文件中没有表头,设置 header=None
      df_no_header = pd.read_excel(file_path, header=None)
      

      将数据保存为 .xls 格式,我们需要使用 Pandas 的 to_excel 方法。Pandas 会在后台调用 xlwt 库来完成这个任务。

      我们将创建一个简单的数据集,并将其保存为 output.xls

      import pandas as pd
      
      # 1. 创建示例数据(字典格式)
      data = {
          '员工ID': [101, 102, 103],
          '姓名': ['张三', '李四', '王五'],
          '入职年份': [2018, 2020, 2023]
      }
      
      # 2. 转换为 DataFrame
      df_output = pd.DataFrame(data)
      
      # 3. 定义输出文件名
      output_file = 'report_2024.xls'
      
      try:
          # 4. 写入文件
          # index=False 表示不把左侧的行索引号(0, 1, 2...)写入 Excel
          df_output.to_excel(output_file, index=False)
          
          print(f"成功将数据写入 {output_file}")
      
      except Exception as e:
          print(f"写入失败:{e}")
      

      如果你需要在一个 .xls 文件中写入多个工作表,需要使用 ExcelWriter 对象:

      with pd.ExcelWriter('multi_sheet_report.xls', engine='xlwt') as writer:
          df_output.to_excel(writer, sheet_name='员工名单', index=False)
          df_output.to_excel(writer, sheet_name='备份数据', index=False)
          
      print("多 Sheet 文件写入完成。")
      

      作为初学者,处理 .xls 时最容易遇到以下问题:

      问题: 当你试图写入超过 65,536 行数据到 .xls 文件时,程序会报错。

      原因: 这是 Excel 97-2003 格式的物理限制。

      解决:

      • 首选: 将文件保存为 .xlsx 格式(支持约 100 万行)。
      • 次选: 如果必须用 .xls,需要将数据拆分到多个 Sheet 或多个文件中。

      问题: 报错 xlrd.biffh.XLRDError: Excel xlsx file; not supported.

      原因: 你试图用 xlrd 读取 .xlsx 文件,或者你的 xlrd 版本过新(2.0+ 版本移除了对 .xlsx 的支持,仅支持 .xls)。

      解决:

      • 读取 .xls: 确保安装了 xlrd
      • 读取 .xlsx: 确保安装了 openpyxl

      问题: 读取中文内容的 .xls 有时会出现乱码(较少见,但存在)。

      解决: 虽然 Pandas 处理得很好,但如果遇到,可以在 read_excel 中尝试添加 encoding='utf-8'encoding='gbk' 参数(虽然新版 Pandas 已移除此参数,通常需检查源文件是否损坏)。

      处理旧版 Excel 文件是数据分析师的基本功。以下是本次教程的核心要点回顾:

      • 读取: 使用 pandas.read_excel('file.xls'),底层依赖 xlrd
      • 写入: 使用 df.to_excel('file.xls'),底层依赖 xlwt
      • 注意: 牢记 .xls 格式有 65536 行的行数限制。

      给初学者的最终建议:除非工作环境强制要求使用 .xls,否则在生成新文件时,强烈建议使用现代的 .xlsx 格式。它体积更小、更安全、且支持更多的数据量。

      到此这篇关于Python新手指南之如何读写旧版Excel(.xls)格式文件的文章就介绍到这了,更多相关Python读写旧版Excel文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • 如何在python中使用openpyxl库读写Excel.xlsx文件(有参考列程)
      • python操作excel之openpyxl模块读写xlsx格式使用方法详解
      • Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
      • Python读写Excel大数据文件的3种有效方式对比
      • Python如何使用xlrd和xlwt库读写excel文件
      • python如何通过openpyxl读写Excel文件
      • Python读写Excel文件库的实现示例
      • python使用pandas读写excel文件的方法实例

      站内搜索