
在 Python 中导入 Excel 文件,通常不仅仅是“读取文件”这么简单。在大多数实际场景中,我们需要将 Excel 数据转换为 Python 中可直接使用的数据结构,例如列表(list)、字典(dict)或其他形式。
之所以需要进行这一步转换,是因为 Excel 数据通常以表格形式存储,而 Python 应用在实际开发中更依赖结构化数据来完成处理、集成或存储等操作。因此,在导入过程中,数据往往需要根据具体使用场景转换为不同形式,例如用于顺序处理的列表、用于按字段访问的字典、用于结构建模的自定义对象,或用于持久化存储的数据库。
本文将使用 Spire.XLS for Python 演示如何在 Python 中导入 Excel 文件,并通过实际示例将数据转换为多种结构。
快速导航:
- 整体实现思路与快速示例
- 将 Excel 数据导入为列表(list)
- 将 Excel 数据导入为字典(dict)
- 将 Excel 数据导入为自定义对象
- 将 Excel 数据导入数据库
- 常见错误与注意事项
整体实现思路与快速示例
将 Excel 数据导入 Python,本质上可以拆分为两个核心步骤:
- 加载 Excel 文件 —— 读取文件并获取原始数据
- 数据转换 —— 将数据转换为 Python 可用的数据结构(如 list、dict 或对象)
这种拆分在实际开发中非常重要,因为仅仅读取 Excel 数据通常无法满足需求——数据必须被转换为可处理、可存储或可集成的结构。
核心组件
使用 Spire.XLS for Python 导入 Excel 数据时,通常涉及以下几个关键组件:
- Workbook —— 表示整个 Excel 文件,负责从磁盘加载数据
- Worksheet —— 表示 Excel 文件中的一个工作表
- CellRange —— 表示包含实际数据的单元格区域
- 数据转换层(Data Transformation Layer) —— 你的 Python 逻辑,用于将单元格数据转换为目标结构
数据流概览
典型的数据处理流程如下:
Excel 文件 → Workbook → Worksheet → CellRange → Python 数据结构
理解这一流程,有助于你在不同业务场景中设计更灵活的数据导入逻辑。
快速示例:在 Python 中导入 Excel 文件
在运行以下示例前,请先使用 pip 安装 Spire.XLS for Python:
pip install spire.xls
如有需要,也可以手动下载 Spire.XLS for Python 并引入到项目中。
下面的示例展示了最基础的 Excel 数据导入方式:
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("SalesReport.xlsx")
data = []
sheet = workbook.Worksheets[0]
# 获取已使用的单元格区域
cellRange = sheet.AllocatedRange
# 读取第一行数据
for col in range(cellRange.Columns.Count):
data.append(sheet.Range[1, col +1].Value)
print(data)
workbook.Dispose()
下图展示了从 Excel 文件中导入的数据示例:

该示例展示了一个基础的数据处理流程:
- 初始化 Workbook 对象
- 加载 Excel 文件
- 访问工作表与单元格数据
- 最后释放资源(Dispose)
对于更复杂的场景,例如从内存流中读取 Excel 文件,可以参考如何使用 Python 从内存流中载入 Excel 文件。
将 Excel 数据导入为列表(list)
将 Excel 数据转换为“按行组成的列表”是最简单、最常见的方式之一。这种结构非常适合用于遍历和基础数据处理。
示例
from spire.xls import *
# 加载工作簿
workbook = Workbook()
workbook.LoadFromFile("SalesReport.xlsx")
# 获取第一个工作表的已用区域
sheet = workbook.Worksheets[0]
cellRange = sheet.AllocatedRange
# 创建用于存储数据的列表
data = []
for row_index in range(cellRange.RowCount):
row_data = []
for cell_index in range(cellRange.ColumnCount):
row_data.append(cellRange[row_index + 1, cell_index + 1].Value)
data.append(row_data)
workbook.Dispose()
技术解析
将 Excel 数据导入为列表时,每一行数据会被转换为一个 Python 列表,从而保留原始行顺序。
代码执行逻辑:
- 使用嵌套循环按“行优先”方式遍历工作表
- 外层循环遍历行,内层循环访问每个单元格
- 由于 Spire.XLS 使用从 1 开始的索引,因此需要
+1偏移
这种设计的优势:
- 使用 AllocatedRange 仅遍历已使用单元格,提高效率
- 按行提取数据,结构与 Excel 原始布局一致
- 通过中间变量
row_data保证数据聚合过程清晰
这种结构非常适用于:
- 顺序处理数据
- 简单数据转换
- 或作为进一步转换(如转为字典或对象)的基础结构
将 Excel 数据导入为字典(dict)
如果 Excel 文件包含表头,将其导入为字典结构可以显著提升数据的可读性和访问效率。
示例
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("SalesReport.xlsx")
sheet = workbook.Worksheets[0]
cellRange = sheet.AllocatedRange
rows = list(cellRange.Rows)
headers = [cellRange[1, cell_index + 1].Value for cell_index in range(cellRange.ColumnCount)]
data_dict = []
for row in rows[1:]:
row_dict = {}
for i, cell in enumerate(row.Cells):
row_dict[headers[i]] = cell.Value
data_dict.append(row_dict)
workbook.Dispose()
技术解析
将 Excel 数据导入为字典时,每一行数据会被转换为一个“键值对结构”,其中键来自表头,值来自单元格内容。
代码执行逻辑:
- 提取第一行作为字段名
- 遍历后续每一行数据
- 根据列索引,将单元格值映射到对应字段
这种设计的优势:
- 表头与数据列顺序一致,可直接通过索引匹配
- 无需依赖固定列位置,提高灵活性
- 生成的数据结构具备自描述性(字段名称明确)
这种方式特别适用于:
- 结构化数据处理
- JSON 数据转换
- API 数据交互
- 标注数据集处理
将 Excel 数据导入为自定义对象
在一些结构化应用中,你可能需要将 Excel 数据映射为 Python 对象,以实现类型安全并封装业务逻辑。
示例
class Employee:
def __init__(self, name, age, department):
self.name = name
self.age = age
self.department = department
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("EmployeeData.xlsx")
sheet = workbook.Worksheets[0]
cellRange = sheet.AllocatedRange
employees = []
for row in list(cellRange.Rows)[1:]:
name = row.Cells[0].Value
age = int(row.Cells[1].Value) if row.Cells[1].Value else None
department = row.Cells[2].Value
emp = Employee(name, age, department)
employees.append(emp)
workbook.Dispose()
技术解析
将 Excel 数据导入为对象,本质上是将每一行数据映射为一个类实例。
代码执行逻辑:
- 定义一个类作为数据模型
- 逐行读取 Excel 数据并提取字段值
- 将这些值传入构造函数,生成对象实例
这种设计的优势:
- 构造函数充当数据转换的控制入口
- 可在其中进行数据校验、类型转换或预处理
- 数据不再是松散结构,而是与业务模型保持一致
这种方式适用于:
- 后端系统开发
- 领域模型明确的业务逻辑层
- 需要强类型约束的应用场景
将 Excel 数据导入数据库
在很多实际应用中,Excel 数据需要被导入数据库,以实现持久化存储和高效查询。
示例
import sqlite3
from spire.xls import *
# 连接 SQLite 数据库
conn = sqlite3.connect("sales.db")
cursor = conn.cursor()
# 创建与 Excel 结构对应的数据表
cursor.execute("""
CREATE TABLE IF NOT EXISTS sales (
product TEXT,
category TEXT,
region TEXT,
sales REAL,
units_sold INTEGER
)
""")
# 加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("Sales.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
rows = list(sheet.AllocatedRange.Rows)
# 遍历数据行(跳过表头)
for row in rows[1:]:
product = row.Cells[0].Value
category = row.Cells[1].Value
region = row.Cells[2].Value
# 去除千分位分隔符并转换为浮点数
sales_text = row.Cells[3].Value
sales = float(str(sales_text).replace(",", "")) if sales_text else 0
# 转换销量为整数
units_text = row.Cells[4].Value
units_sold = int(units_text) if units_text else 0
# 插入数据
cursor.execute(
"INSERT INTO sales VALUES (?, ?, ?, ?, ?)",
(product, category, region, sales, units_sold)
)
# 提交并关闭连接
conn.commit()
conn.close()
# 释放 Excel 资源
workbook.Dispose()
下图展示了 Excel 数据与 SQLite 数据库结构示例:

技术解析
将 Excel 数据导入数据库,本质上是将每一行数据转换为一条持久化记录。
代码执行逻辑:
- 建立数据库连接并创建数据表
- 确保表结构与 Excel 数据结构一致
- 遍历每一行数据并通过 SQL 插入
这种设计的优势:
- 表结构一致性确保数据映射准确
- 数据规范化(如数值转换)提升兼容性
- 使用参数化查询提升安全性并正确处理数据类型
适用场景:
- 数据存储与持久化
- 数据查询与分析
- 数据管道与系统集成
更多 Excel 与数据库操作,请查看如何使用 Python 在 Excel 文件与数据库之间交换数据。
为什么选择 Spire.XLS 进行 Excel 数据导入
本文示例使用 Spire.XLS for Python,主要基于以下优势:
1. 清晰的对象模型
提供 Workbook、Worksheet、CellRange 等结构,与 Excel 的组织方式高度一致,使数据处理流程更直观。
2. 专注数据访问
无需处理底层文件解析,可以直接访问单元格与区域数据,使开发重点集中在数据转换逻辑上。
3. 多格式兼容
支持 XLS、XLSX,以及 CSV、ODS、OOXML 等多种格式,可复用同一套导入逻辑。
4. 无需依赖 Excel 环境
无需安装 Microsoft Excel,即可处理文件,适用于服务器和自动化环境。
常见错误与注意事项
文件路径错误
确保 Excel 文件路径正确,并且脚本可以访问。建议使用绝对路径或检查当前工作目录:
import os
print(os.getcwd())
缺少表头
在使用字典结构时,请确保 Excel 第一行为表头,否则键名将不正确。
内存管理
处理完成后务必释放 Workbook 资源,尤其是在处理大文件时:
workbook.Dispose()
数据类型转换
Excel 单元格返回的数据类型可能与预期不一致,需要根据业务进行转换和校验。
读取与导入 Excel 文件的区别
在 Python 中,“读取 Excel”与“导入 Excel”是相关但不同的概念:
- 读取 Excel:仅获取 Excel 原始数据,例如单元格值或行数据
- 导入 Excel:不仅包含读取,还包括将数据转换为可用结构(如 list、dict、Object、数据库)
换句话说:读取是导入的一部分,导入 Excel 数据的目标是“让数据可用”,而不仅是“获取数据”。
总结
在 Python 中导入 Excel 文件,不只是读取数据,更重要的是将数据转换为应用可用的结构。
本文介绍了多种常见 Excel 文件导入方式,包括将 Excel 数据导入为列表(list)、导入为字典(dict)、映射为对象以及存储到数据库。
借助 Spire.XLS for Python,你可以以较少代码实现多种数据结构转换,并高效处理不同格式的 Excel 文件,适用于各类数据处理场景。
如果你需要评估 Spire.XLS for Python 的完整功能,可联系我们申请试用许可。
常见问题解答
在 Python 中导入 Excel 文件是什么意思?
指将 Excel 数据转换为 Python 数据结构(如列表、字典或数据库),以便进一步处理和集成。
如何在 Python 中导入 Excel 数据?
可以使用 Spire.XLS 等库加载 Excel 文件,并通过遍历单元格将数据转换为 Python 结构。
可以将 Excel 数据导入数据库吗?
可以。你可以读取 Excel 数据并插入到 SQLite、MySQL、PostgreSQL 等数据库中,常用于数据迁移和系统集成。
哪种数据结构最适合?
取决于使用场景:
- list:适合简单遍历
- dict:适合按字段访问
- object:适合业务建模
- database:适合持久化与查询
是否需要安装 Microsoft Excel?
不需要。Spire.XLS for Python 可独立运行,无需依赖 Excel 环境。







