Python 处理 Excel 文件

1. 引言
Excel 是一种非常常用的办公软件,常用于数据的存储、分析和展示。Python 提供了多种库可以读写 Excel 文件,方便数据处理和分析。本文将详细介绍如何使用 Python 处理 Excel 文件,包括读取、写入数据、修改数据、合并、拆分等操作。
2. 安装相关库
在进行 Excel 文件处理之前,我们需要安装相应的库。常用的 Python 处理 Excel 的库有 openpyxl、xlrd 和 xlwt,可以通过以下命令进行安装:
pip install openpyxl xlrd xlwt
3. 读取 Excel 文件
Python 提供了不同的库读取不同格式的 Excel 文件。常见的 Excel 文件格式有 .xls 和 .xlsx,下面将分别介绍如何读取这两种格式的文件。
3.1 读取 .xls 文件
.xls 是一种较早的 Excel 文件格式,可以使用 xlrd 库来读取该格式的文件。以下是读取 .xls 文件的示例代码:
import xlrd
# 打开 Excel 文件
workbook = xlrd.open_workbook('data.xls')
# 获取第一个 Sheet
sheet = workbook.sheet_by_index(0)
# 获取总行数、总列数
num_rows = sheet.nrows
num_cols = sheet.ncols
# 逐行读取数据
for row in range(num_rows):
for col in range(num_cols):
cell_value = sheet.cell_value(row, col)
print(cell_value)
运行以上代码,可以逐行读取 .xls 文件中的数据。
3.2 读取 .xlsx 文件
.xlsx 是一种较新的 Excel 文件格式,在读取时可以使用 openpyxl 库。以下是读取 .xlsx 文件的示例代码:
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('data.xlsx')
# 获取第一个 Sheet
sheet = workbook.active
# 获取总行数、总列数
num_rows = sheet.max_row
num_cols = sheet.max_column
# 逐行读取数据
for row in sheet.iter_rows():
for cell in row:
cell_value = cell.value
print(cell_value)
运行以上代码,可以逐行读取 .xlsx 文件中的数据。
4. 写入 Excel 文件
除了读取数据,Python 也可以将数据写入 Excel 文件中。以下将介绍如何写入数据到 Excel 文件。
4.1 写入到 .xls 文件
写入到 .xls 文件可以使用 xlwt 库。以下是写入到 .xls 文件的示例代码:
import xlwt
# 创建一个工作簿
workbook = xlwt.Workbook()
# 创建一个工作表
sheet = workbook.add_sheet('Sheet1')
# 写入数据
sheet.write(0, 0, 'Hello')
sheet.write(0, 1, 'World')
# 保存文件
workbook.save('output.xls')
运行以上代码,将会创建一个 output.xls 文件,并写入数据 ‘Hello’ 和 ‘World’ 到第一个 Sheet。
4.2 写入到 .xlsx 文件
写入到 .xlsx 文件可以使用 openpyxl 库。以下是写入到 .xlsx 文件的示例代码:
import openpyxl
# 创建一个工作簿
workbook = openpyxl.Workbook()
# 获取第一个 Sheet
sheet = workbook.active
# 写入数据
sheet['A1'] = 'Hello'
sheet['B1'] = 'World'
# 保存文件
workbook.save('output.xlsx')
运行以上代码,将会创建一个 output.xlsx 文件,并写入数据 ‘Hello’ 和 ‘World’ 到第一个 Sheet。
5. 修改 Excel 文件
除了读取和写入数据,Python 也可以对 Excel 文件进行修改。以下是一些常见的修改操作。
5.1 修改某个单元格的值
要修改指定单元格的值,可以通过单元格的坐标进行操作。以下是修改 .xlsx 文件的示例代码:
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('data.xlsx')
# 获取第一个 Sheet
sheet = workbook.active
# 修改 A1 单元格的值
sheet['A1'] = 'New Value'
# 保存文件
workbook.save('data_new.xlsx')
运行以上代码,将会修改 data.xlsx 文件中的 A1 单元格的值为 ‘New Value’。
5.2 修改整行或整列的值
如果要修改整行或整列的值,可以使用循环进行操作。以下是修改 .xlsx 文件整列的示例代码:
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('data.xlsx')
# 获取第一个 Sheet
sheet = workbook.active
# 修改第一列的值
for row in sheet.iter_rows(min_row=1, max_row=sheet.max_row, min_col=1, max_col=1):
for cell in row:
cell.value = 'New Value'
# 保存文件
workbook.save('data_new.xlsx')
运行以上代码,将会修改 data.xlsx 文件中的第一列的值为 ‘New Value’。
6. 合并和拆分 Excel 文件
有时候我们需要将多个 Excel 文件合并成一个,或者将一个 Excel 文件拆分成多个。Python 提供了很多方法可以实现这些操作,下面将介绍一些常见的操作方式。
6.1 合并多个 Excel 文件
要合并多个 Excel 文件,可以使用 pandas 或 openpyxl 库。以下是使用 openpyxl 库合并 .xlsx 文件的示例代码:
import openpyxl
# 创建一个新的工作簿
merged_workbook = openpyxl.Workbook()
merged_sheet = merged_workbook.active
# 遍历要合并的文件
files = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']
for file in files:
workbook = openpyxl.load_workbook(file)
sheet = workbook.active
# 逐行读取数据
for row in sheet.iter_rows():
row_values = [cell.value for cell in row]
merged_sheet.append(row_values)
# 保存合并后的文件
merged_workbook.save('merged.xlsx')
运行以上代码,将会合并 file1.xlsx、file2.xlsx 和 file3.xlsx 中的数据到一个新的文件 merged.xlsx。
6.2 拆分 Excel 文件
要拆分一个 Excel 文件,可以使用 pandas 或 xlrd 库。以下是使用 xlrd 库拆分 .xlsx 文件的示例代码:
import xlrd
import xlwt
# 读取 Excel 文件
workbook = xlrd.open_workbook('data.xlsx')
sheet = workbook.sheet_by_index(0)
# 获取总行数
num_rows = sheet.nrows
# 定义拆分文件的行数
split_size = 100
# 获取文件名
file_name_template = 'split_{0}.xls'
# 计算拆分文件的数量
num_files = (num_rows // split_size) + 1
# 拆分文件
for i in range(num_files):
start_row = i * split_size
end_row = min((i+1) * split_size, num_rows)
# 创建一个新的工作簿
split_workbook = xlwt.Workbook()
split_sheet = split_workbook.add_sheet('Sheet1')
# 拷贝数据
for row in range(start_row, end_row):
for col in range(sheet.ncols):
cell_value = sheet.cell_value(row, col)
split_sheet.write(row - start_row, col, cell_value)
# 保存拆分文件
split_workbook.save(file_name_template.format(i))
运行以上代码,将会将 data.xlsx 文件中的数据拆分成以 split_{n}.xls 命名的多个文件,每个文件包含100行数据(最后文件可能少于100行)。
7. 结论
本文介绍了如何使用 Python 处理 Excel 文件,包括读取、写入数据、修改数据以及合并、拆分文件的操作。通过掌握这些技巧,你可以更加灵活地处理和分析 Excel 数据,在日常工作和数据处理中发挥更大的作用。
极客教程