python对Excel按条件进行内容补充(推荐)

  • Post category:Python

我来详细讲解一下“Python对Excel按条件进行内容补充”的完整实例教程。

标题

首先,为了让我们的文本更加规范化,我们需要给整个文本添加一个标题,这样可以让文本更加清晰明了。

Python对Excel按条件进行内容补充

安装openpyxl库

在实践之前,我们需要先安装 openpyxl 库。在命令行中输入以下命令即可:

pip install openpyxl

如果你没有安装pip,那么需要先安装pip,可参考pip的安装文档。

实例一

假设我们有一个excel文件test.xlsx,内容如下:

姓名 年龄 性别
张三 20
李四 18
王五 22

我们现在需要对这个表格按照年龄进行一个排序,这时候我们就可以使用Python对Excel进行内容补充。

代码如下:

from openpyxl import load_workbook

def sort_by_age(file_path):
    wb = load_workbook(file_path)
    sheet = wb.active

    data = []

    for row in sheet.iter_rows(min_row=2):
        values = [cell.value for cell in row]
        data.append(values)

    data = sorted(data, key=lambda x: x[1])

    for idx, row in enumerate(data):
        sheet.cell(row=idx+2, column=1).value = row[0]
        sheet.cell(row=idx+2, column=2).value = row[1]
        sheet.cell(row=idx+2, column=3).value = row[2]

    wb.save(file_path)

if __name__ == '__main__':
    sort_by_age('test.xlsx')

从上面的代码可以看出,我们首先创建了一个 load_workbook() 类,并指定了 test.xlsx 这个 Excel 文件。接着我们获取了 sheet 表格。

我们通过 iter_rows() 来遍历 sheet 表格的所有行,并将每一行的内容保存到 data 这个数组中。接着我们定义一个排序规则,这里使用 lambda 函数,按照年龄进行排序。

最后,我们通过 enumerate() 函数遍历已经排好序的列表 data,并将每行数据的三个字段按照顺序写入到 sheet 表格的相应单元格中。最后保存文件。

运行代码后,我们可以看到 Excel 表格已经按照年龄进行了排序,结果如下:

姓名 年龄 性别
李四 18
张三 20
王五 22

实例二

接下来我们再来看一个实例。假设我们有一张Excel表格 test.xlsx,内容如下:

姓名 科目 分数
张三 数学 60
李四 数学 65
张三 英语 70
李四 英语 75
王五 数学 80
王五 英语 85

现在我们需要统计出每个人的总分,并添加到表格中。

代码如下:

from openpyxl import load_workbook

def add_total_score(file_path):
    wb = load_workbook(file_path)
    sheet = wb.active

    total_score_col = sheet.max_column + 1
    sheet.cell(row=1, column=total_score_col).value = '总分'

    data = {}

    for row in sheet.iter_rows(min_row=2):
        name = row[0].value
        score = row[2].value

        if name in data:
            data[name].append(score)
        else:
            data[name] = [score]

    for idx, row in enumerate(sheet.iter_rows(min_row=2)):
        name = row[0].value
        total_score = sum(data[name])
        sheet.cell(row=idx+2, column=total_score_col).value = total_score

    wb.save(file_path)

if __name__ == '__main__':
    add_total_score('test.xlsx')

从代码可以看出,我们首先创建了一个 load_workbook() 类,并指定了 test.xlsx 这个 Excel 文件。接着我们获取了 sheet 表格。

我们还定义了一个变量 total_score_col 来获得 sheet 表格中下一个空列的位置,并在此列的第一行写入一个表头 总分

我们之后遍历 sheet 表格的所有行,并将每个人的成绩保存到 data 字典中。我们可以通过 if 来判断每个人的名字是否已经在 data 字典中,如果已经存在,那么就添加到这个人的成绩列表中。如果不存在,那么就新建一个列表并添加这个人的成绩。

最后,我们通过 sheet.iter_rows() 来遍历 sheet 表格的所有行,并根据每行中的姓名字段,计算这个人的总分并添加到新的一列 总分 中。最后保存文件。 运行代码后,我们可以看到 Excel 表格中已经添加了一列 总分,并且对每个人的成绩进行了统计,结果如下:

姓名 科目 分数 总分
张三 数学 60 130
李四 数学 65 140
张三 英语 70 130
李四 英语 75 140
王五 数学 80 165
王五 英语 85 165

结论

以上就是本文介绍Python对Excel按条件进行内容补充的两个实例,其中一个是对Excel进行排序,另一个是对Excel进行数据统计,希望对大家有所帮助。