下面是“零基础使用Python读写处理Excel表格的方法”的完整实例教程。
介绍
Excel是一个非常常见的表格处理软件,而Python作为一种编程语言,也提供了很多的库来读写处理Excel表格,本文将介绍如何使用Python进行Excel表格的读写处理。
准备工作
在进行Excel表格的读写处理前,我们需要安装Python的相关库,这里我们需要用到xlrd
和xlwt
这两个库,可以通过以下命令进行安装:
pip install xlrd xlwt
读取Excel表格
首先,我们先来讲一下如何读取Excel表格中的数据,我们以example.xlsx
工作簿为例。
import xlrd
# 打开工作簿
workbook = xlrd.open_workbook('example.xlsx')
# 获取所有的工作表名
sheet_names = workbook.sheet_names()
print('Sheet Names:', sheet_names)
# 获取第一个工作表
worksheet = workbook.sheet_by_name(sheet_names[0])
# 获取工作表的行数和列数
num_rows = worksheet.nrows
num_cols = worksheet.ncols
print('Total Rows:', num_rows)
print('Total Columns:', num_cols)
# 获取第二行第三列的单元格值
cell_value = worksheet.cell_value(1, 2)
print('Cell (2, 3) Value:', cell_value)
# 遍历工作表每一行的数据
for i in range(num_rows):
row_values = worksheet.row_values(i)
print(f'Row {i+1} Values:', row_values)
在运行上述代码后,会输出Excel表格中的所有工作表名、总行数、总列数、指定位置的单元格值、每一行的数据。
写入Excel表格
接下来,我们来讲一下如何向Excel表格中写入数据,我们先创建一个新的Excel工作簿,并将数据写入第一个工作表中,示例代码如下:
import xlwt
# 创建新的工作簿并添加工作表
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('Sheet1')
# 向单元格中写入数据
worksheet.write(0, 0, 'ID')
worksheet.write(0, 1, 'Name')
worksheet.write(0, 2, 'Age')
# 写入多行数据
data = [
['1', 'Tom', '18'],
['2', 'Jane', '20'],
['3', 'David', '25']
]
for i in range(len(data)):
row = data[i]
for j in range(len(row)):
worksheet.write(i+1, j, row[j])
# 保存工作簿
workbook.save('output.xls')
运行上述代码后,会输出一个新的Excel表格文件output.xls
,并向第一个工作表中写入了ID、Name、Age三列标题,以及三行数据。
类似的,我们还可以使用xlrd
和xlwt
中的其他方法来进行Excel表格的读写处理,这里不再赘述。
示例
在实际使用中,我们可能需要对Excel表格进行一些具体的操作,这里列举两个示例:
示例1:Excel表格中的数据筛选和统计
我们首先定义一个Person
类来表示数据表中的每一行数据:
class Person:
def __init__(self, id_, name, gender, age, score):
self.id = id_
self.name = name
self.gender = gender
self.age = age
self.score = score
然后我们从Excel表格中读取所有数据,并将其存储到一个列表中:
import xlrd
# 读取Excel表格中的数据
workbook = xlrd.open_workbook('example.xlsx')
worksheet = workbook.sheet_by_index(0)
# 存储所有数据到一个列表中
persons = []
for i in range(1, worksheet.nrows):
row_data = worksheet.row_values(i, start_colx=0, end_colx=5)
person = Person(*row_data)
persons.append(person)
接着,我们可以根据条件对数据进行筛选和统计:
# 筛选出年龄小于25岁的人的姓名和分数
young_persons = [person for person in persons if person.age < 25]
for person in young_persons:
print(person.name, person.score)
# 统计男女的平均分
male_persons = [person for person in persons if person.gender == 'Male']
female_persons = [person for person in persons if person.gender == 'Female']
male_scores = [person.score for person in male_persons]
female_scores = [person.score for person in female_persons]
male_average = sum(male_scores) / len(male_scores)
female_average = sum(female_scores) / len(female_scores)
print('Male Average Score:', male_average)
print('Female Average Score:', female_average)
示例2:将多个Excel表格合并为一个
假设我们有多个Excel表格,每个表格都有相同的列数和列名,我们需要将这些表格合并到一个表格中,示例代码如下:
import xlrd
import xlwt
# 读取所有原始Excel表格中的数据
all_data = []
for i in range(1, 4):
workbook = xlrd.open_workbook(f'example_{i}.xlsx')
worksheet = workbook.sheet_by_index(0)
data = [worksheet.row_values(j) for j in range(1, worksheet.nrows)]
all_data.extend(data)
# 将数据写入新的Excel表格中
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('Sheet1')
columns = ['ID', 'Name', 'Gender', 'Age', 'Score']
for i in range(len(columns)):
worksheet.write(0, i, columns[i])
for i in range(len(all_data)):
row = all_data[i]
for j in range(len(row)):
worksheet.write(i+1, j, row[j])
workbook.save('merged.xlsx')
在运行上述代码后,会输出一个名为merged.xlsx
的新的Excel表格文件,其中包含了所有原始表格中的数据。