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

相关推荐
染指11101 分钟前
152.Agent-LangGraph-Command的参数
人工智能·python·langchain·agents
第404号工位21 分钟前
“已彻底删除”的照片与文件到底去哪了?我用底层扇区扫描,扒出手机和电脑的幽灵数据
linux·python·架构
智购科技自动售卖机厂家21 分钟前
双摄像头方案F1-score只有0.85,排查发现是上下视角的融合逻辑写反了~YH
python·单片机·嵌入式硬件·算法·eclipse
田里的水稻24 分钟前
FA_CNN卷积神经网络二---PyTorch
人工智能·pytorch·python·深度学习·cnn
小肝一下44 分钟前
1.大模型介绍
python·langchain·大模型·ollama·langgrap
xiangjiaodalishi1 小时前
从 0 到 1 搭建 AI 友好的网站结构:信息架构与 GEO 的交叉地带
人工智能·python
凯瑟琳.奥古斯特1 小时前
OCR文字检测算法对比解析
开发语言·python·职场和发展
Misnice1 小时前
Python 内置函数大全
开发语言·windows·python
沉下心来学鲁班1 小时前
具身智能进阶:让 MicroDuck 踩着高跷走路
人工智能·python·机器人
comedate1 小时前
【AI】Jev API 接入实战:用 Python 调用 TypeSafe Jev 做结构化判断
人工智能·python·jev·typesafe·快速判断模型