Python高效读写XLS和XLSX文件:xlrd, xlwt, openpyxl详解与最佳实践85


在数据处理领域,Microsoft Excel文件(XLS和XLSX)是极其常见的格式。Python作为一门强大的脚本语言,提供了多种库来方便地读写这些文件。本文将深入探讨Python中处理XLS和XLSX文件的常用库:xlrd, xlwt, 和openpyxl,并提供最佳实践以及处理常见问题的技巧。

一、 XLS文件的读写:xlrd和xlwt

xlrd库专门用于读取XLS文件(.xls),而xlwt库则用于写入XLS文件。两者都相对轻量级,易于上手。需要注意的是,xlwt无法写入XLSX文件。

1.1 读取XLS文件 (xlrd):
import xlrd
def read_xls(filepath):
"""读取XLS文件并返回数据列表."""
workbook = xlrd.open_workbook(filepath)
sheet_names = workbook.sheet_names()
data = []
for sheet_name in sheet_names:
sheet = workbook.sheet_by_name(sheet_name)
rows = []
for row_idx in range():
row = sheet.row_values(row_idx)
(row)
(rows)
return data
filepath = ''
data = read_xls(filepath)
print(data)

这段代码首先打开XLS文件,然后获取所有sheet的名称。循环遍历每个sheet,读取每一行的值,并将其存储在一个列表中。最后返回包含所有sheet数据的列表。

1.2 写入XLS文件 (xlwt):
import xlwt
def write_xls(filepath, data):
"""将数据写入XLS文件."""
workbook = ()
for sheet_data in data:
sheet = workbook.add_sheet('Sheet1') # 可以修改sheet名称
for row_idx, row in enumerate(sheet_data):
for col_idx, value in enumerate(row):
(row_idx, col_idx, value)
(filepath)
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
write_xls('', [data])

这段代码创建了一个新的XLS文件,并依次写入数据。 (row_idx, col_idx, value) 函数将值写入指定的单元格。

二、 XLSX文件的读写:openpyxl

openpyxl库是处理XLSX文件(.xlsx)的强大工具,它支持读写XLSX文件,并且功能更全面,能处理更复杂的Excel特性,例如样式、公式和图表等。

2.1 读取XLSX文件 (openpyxl):
from openpyxl import load_workbook
def read_xlsx(filepath):
"""读取XLSX文件并返回数据列表."""
workbook = load_workbook(filepath, data_only=True) # data_only=True 读取计算后的值,而非公式
sheet_names =
data = []
for sheet_name in sheet_names:
sheet = workbook[sheet_name]
rows = []
for row in sheet.iter_rows():
row_data = [ for cell in row]
(row_data)
(rows)
return data
filepath = ''
data = read_xlsx(filepath)
print(data)

这段代码使用load_workbook函数加载XLSX文件。data_only=True参数确保读取的是单元格的最终值,而不是公式本身。iter_rows()方法迭代每一行,方便地获取单元格的值。

2.2 写入XLSX文件 (openpyxl):
from openpyxl import Workbook
def write_xlsx(filepath, data):
"""将数据写入XLSX文件."""
workbook = Workbook()
sheet = # 获取激活的sheet
for row in data:
(row)
(filepath)
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
write_xlsx('', data)

这段代码使用Workbook()创建新的XLSX文件,append()方法方便地添加每一行数据。

三、 最佳实践和常见问题

1. 错误处理: 始终使用try...except块来处理可能出现的IOError或其他异常。

2. 大文件处理: 对于非常大的Excel文件,建议使用迭代器的方式逐行读取,避免一次性加载所有数据到内存,造成内存溢出。

3. 数据类型: 注意不同库处理数据类型的差异,例如日期和时间类型的转换。

4. 编码: 如果遇到编码问题,请指定文件的编码方式,例如xlrd.open_workbook(filepath, encoding_override='utf-8')。

5. 库选择: 对于XLS文件,使用xlrd和xlwt即可;对于XLSX文件,推荐使用openpyxl,因为它功能更强大,也更易于维护。

四、 总结

本文介绍了Python中处理XLS和XLSX文件的常用库,并提供了相应的代码示例和最佳实践。选择合适的库并正确处理潜在问题,可以高效地完成Excel文件的读写操作,提升数据处理效率。

2025-05-30


上一篇:Python高效记录和管理文件位置:方法、技巧与最佳实践

下一篇:Python字符串转换与运算详解