纯 Python 环境下 Excel 文件的读取与导入详解

在日常数据处理工作中,将 Excel 文件中的数据导入 Python 环境进行后续分析是最常见的需求之一。本文将介绍如何使用 Free Spire.XLS for Python 这一免费库,完成 Excel 数据的读取、解析与导入操作。


一、为什么选择这个方案

在 Python 生态中,处理 Excel 文件的方案众多。Free Spire.XLS for Python 的突出优势在于无需安装 Microsoft Office 或 WPS ,纯 Python 环境即可操作 .xls.xlsx 格式文件。它支持 Python 3.6 及以上版本,兼容 Windows、Linux和 macOS。免费版足以满足大多数个人和小型项目的数据导入需求。


二、环境准备

通过pip命令即可完成安装:

bash 复制代码
pip install Spire.XLS.Free

注意:免费版对单次处理有工作表数量(最多5个)和数据行数(每表最多200行)的限制,适用于中小型文件的导入场景。

安装完成后,在Python脚本中导入相关模块:

python 复制代码
from spire.xls import *
from spire.xls.common import *

三、核心对象模型

理解两个核心对象是使用该库的基础:

  • Workbook:代表整个Excel工作簿,负责文件的加载与保存
  • Worksheet:代表单个工作表,提供单元格访问与数据读取能力

四、读取Excel数据的基础操作

4.1 加载Excel文件

python 复制代码
# 创建Workbook对象
workbook = Workbook()

# 加载Excel文件
workbook.LoadFromFile("数据.xlsx")

4.2 获取工作表

python 复制代码
# 获取第一个工作表(索引从0开始)
worksheet = workbook.Worksheets[0]
# 或使用 get_Item 方法
worksheet = workbook.Worksheets.get_Item(0)

4.3 读取单元格数据

通过Worksheet.Range获取单元格后,使用ValueTextNumberValue等属性读取数据:

python 复制代码
# 通过行号和列号获取(行、列从1开始计数)
cell_value = worksheet.Range[1, 1].Value  # 读取A1单元格

# 通过地址获取
cell_text = worksheet.Range["B2"].Text

# 读取数值
cell_number = worksheet.Range["C3"].NumberValue

4.4 遍历工作表中的所有数据

python 复制代码
# 获取数据的实际使用范围
row_count = worksheet.AllocatedRange.RowCount
col_count = worksheet.AllocatedRange.ColumnCount

# 遍历所有行和列
for row in range(1, row_count + 1):
    row_data = []
    for col in range(1, col_count + 1):
        cell_value = worksheet.Range[row, col].Value
        row_data.append(cell_value)
    print(row_data)

五、实战:将 Excel 数据导入 Python 列表

以下是一个完整的示例,将Excel文件中的所有数据读取为二维列表:

python 复制代码
from spire.xls import Workbook

def excel_to_list(file_path):
    """将Excel文件读取为二维列表"""
    workbook = Workbook()
    workbook.LoadFromFile(file_path)
    
    # 获取第一个工作表
    sheet = workbook.Worksheets[0]
    
    # 获取数据范围
    row_count = sheet.AllocatedRange.RowCount
    col_count = sheet.AllocatedRange.ColumnCount
    
    # 读取所有数据
    data = []
    for row in range(1, row_count + 1):
        row_data = []
        for col in range(1, col_count + 1):
            row_data.append(sheet.Range[row, col].Value)
        data.append(row_data)
    
    workbook.Dispose()  # 释放资源
    return data

# 使用示例
data = excel_to_list("销售数据.xlsx")
for row in data:
    print(row)

六、实战:将 Excel 数据导入字典列表(带表头)

在实际业务中,更常见的是将数据转换为字典列表,便于按字段名访问:

python 复制代码
from spire.xls import Workbook

def excel_to_dict_list(file_path):
    """将Excel文件读取为字典列表,第一行作为字段名"""
    workbook = Workbook()
    workbook.LoadFromFile(file_path)
    
    sheet = workbook.Worksheets[0]
    row_count = sheet.AllocatedRange.RowCount
    col_count = sheet.AllocatedRange.ColumnCount
    
    # 读取表头(第一行)
    headers = []
    for col in range(1, col_count + 1):
        headers.append(sheet.Range[1, col].Value)
    
    # 读取数据行(从第二行开始)
    result = []
    for row in range(2, row_count + 1):
        record = {}
        for col in range(1, col_count + 1):
            record[headers[col - 1]] = sheet.Range[row, col].Value
        result.append(record)
    
    workbook.Dispose()
    return result

# 使用示例
records = excel_to_dict_list("员工信息.xlsx")
for emp in records:
    print(f"姓名:{emp.get('姓名')},部门:{emp.get('部门')}")

小结

本文介绍了将 Excel 数据导入Python的完整流程,涵盖环境配置、基础读取、列表转换以及字典列表转换等典型场景。用到的免费库无需依赖Office环境,安装简便,API 直观,是处理中小型 Excel 文件导入任务的一个实用选择。

相关推荐
Thomas.Sir1 小时前
第38课:TensorFlow|可视化工具TensorBoard全用法【日志写入、指标监控、网络可视化】
人工智能·python·tensorflow
SEO_juper1 小时前
外贸多语言站最隐蔽的流量杀手:hreflang 错了,谷歌把德语页推给美国人(附审计脚本)
开发语言·前端·python·seo·独立站·谷歌优化
Metaphor6922 小时前
快速合并 Word 文档【Python 指南】
python·word
JAVA老架构AI智能化2 小时前
如何高质量分块
人工智能·python
泡海椒2 小时前
告别反射低效:JQuick-Java ASM动态调用链性能优化实战
java·python·性能优化
2601_956319882 小时前
用示例和练习,把量化规则先练清楚
人工智能·python
满怀冰雪2 小时前
25-迁移学习入门:加载预训练模型并微调
人工智能·python·机器学习·迁移学习·paddle
2601_962284502 小时前
安卓APP UI自动化测试:Python + UiAutomator2 + pytest + pytest-html
python·pytest·uiautomator2·ui自动化测试·安卓app
2601_962078032 小时前
构建RESTful APIs:使用Python和Flask
python·flask·web开发·api设计·构建restfulapis