零基础使用Python读写处理Excel表格的方法

  • Post category:Python

下面是“零基础使用Python读写处理Excel表格的方法”的完整实例教程。

介绍

Excel是一个非常常见的表格处理软件,而Python作为一种编程语言,也提供了很多的库来读写处理Excel表格,本文将介绍如何使用Python进行Excel表格的读写处理。

准备工作

在进行Excel表格的读写处理前,我们需要安装Python的相关库,这里我们需要用到xlrdxlwt这两个库,可以通过以下命令进行安装:

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三列标题,以及三行数据。

类似的,我们还可以使用xlrdxlwt中的其他方法来进行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表格文件,其中包含了所有原始表格中的数据。