在日常数据处理工作中,将 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 文件导入任务的一个实用选择。