纯 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获取单元格后,使用Value、Text、NumberValue等属性读取数据:

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 文件导入任务的一个实用选择。

相关推荐
夏天拐跑了西瓜3 小时前
一文入门LangChain:从框架认知到构建你的第一个AI Agent
python·langchain·conda·agent
魔猴疯猿3 小时前
从0到1用Python开发第一个智能体
人工智能·python·深度学习·神经网络·机器学习
xiaoqi01955 小时前
机器学习因子分析实战:从量化特征到可视化决策
人工智能·python·机器学习
Escalating_xu5 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
happylifetree5 小时前
Python14:核心语法-数据存储与运算-字符串定义
python
hhb_6185 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法
小静AI工程实验室6 小时前
asyncio.Queue 有界队列实战:背压、task_done、join 与异常收尾
python
小凡geo6 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
Zhou1411366 小时前
SpringBoot_03_Web开发
前端·spring boot·python
weixin199701080166 小时前
《1688物流API接口边界:logistics.trace.get 与 freight.template.list 的隐藏约束》(附Python源码)
windows·python·list