Python办公自动化从Excel中计算整理数据并写入Word

  • Post category:Python

下面我会详细讲解一下“Python办公自动化从Excel中计算整理数据并写入Word”的完整实例教程。

1. 实现目标

我们的目标是通过 Python 实现将 Excel 中的数据进行计算整理,并将结果写入 Word 文件中的过程。具体步骤如下:

  • 读取 Excel 表格中的数据;
  • 对数据进行处理和计算;
  • 将计算结果写入 Word 文件中。

2. 实现步骤

2.1 准备工作

在开始之前,我们需要安装以下库:

  • pandas:用于读取 Excel 数据;
  • openpyxl:用于读写 Excel 文件;
  • docx:用于读写 Word 文件。

安装命令:

pip install pandas openpyxl python-docx

2.2 读取 Excel 数据

我们使用 pandas 库来读取 Excel 数据。具体代码如下:

import pandas as pd

df = pd.read_excel('data.xlsx')  # 读取 Excel 文件

2.3 数据处理和计算

在这个示例中,我们使用 pandas 库来对 Excel 数据进行处理和计算。具体代码如下:

# 计算每个人的总成绩和平均成绩
df['总成绩'] = df['语文'] + df['数学'] + df['英语']
df['平均成绩'] = df['总成绩'] / 3

2.4 将计算结果写入 Word 文件

我们使用 docx 库来读写 Word 文件。具体代码如下:

from docx import Document
from docx.shared import Pt  # 导入字体模块

document = Document()  # 创建 Word 文档

# 添加标题
document.add_heading('班级成绩汇总表', level=0)

# 添加表格
table = document.add_table(rows=1, cols=5, style='Table Grid')

# 添加表头
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'
hdr_cells[1].text = '语文'
hdr_cells[2].text = '数学'
hdr_cells[3].text = '英语'
hdr_cells[4].text = '平均成绩'

# 添加行数据
for i in range(len(df)):
    row_cells = table.add_row().cells
    row_cells[0].text = df.iloc[i]['姓名']
    row_cells[1].text = str(df.iloc[i]['语文'])
    row_cells[2].text = str(df.iloc[i]['数学'])
    row_cells[3].text = str(df.iloc[i]['英语'])
    row_cells[4].text = str(df.iloc[i]['平均成绩'])

# 保存 Word 文件
document.save('班级成绩汇总表.docx')

3. 示例说明

3.1 示例 1

假设我们有一个 Excel 文件,包含以下数据:

姓名 语文 数学 英语
小明 80 90 85
小红 75 92 88
小刚 90 85 76

我们需要计算每个人的总成绩和平均成绩,并将结果写入 Word 文件。实现代码如下:

import pandas as pd
from docx import Document

# 读取 Excel 文件
df = pd.read_excel('data.xlsx')

# 计算总成绩和平均成绩
df['总成绩'] = df['语文'] + df['数学'] + df['英语']
df['平均成绩'] = df['总成绩'] / 3

# 将结果写入 Word 文件
document = Document()
document.add_heading('班级成绩汇总表', level=0)
table = document.add_table(rows=1, cols=5, style='Table Grid')
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'
hdr_cells[1].text = '语文'
hdr_cells[2].text = '数学'
hdr_cells[3].text = '英语'
hdr_cells[4].text = '平均成绩'
for i in range(len(df)):
    row_cells = table.add_row().cells
    row_cells[0].text = df.iloc[i]['姓名']
    row_cells[1].text = str(df.iloc[i]['语文'])
    row_cells[2].text = str(df.iloc[i]['数学'])
    row_cells[3].text = str(df.iloc[i]['英语'])
    row_cells[4].text = str(df.iloc[i]['平均成绩'])
document.save('班级成绩汇总表.docx')

实现结果如下:

姓名 语文 数学 英语 平均成绩
小明 80 90 85 85.0
小红 75 92 88 85.0
小刚 90 85 76 83.66666666666667

3.2 示例 2

假设我们有一个 Excel 文件,包含以下数据:

姓名 语文 数学 英语
小明 80 90 85
小红 75 92 88

我们需要计算每个人的总成绩和平均成绩,并将结果写入 Word 文件。实现代码如下:

import pandas as pd
from docx import Document

# 读取 Excel 文件
df = pd.read_excel('data.xlsx')

# 计算总成绩和平均成绩
df['总成绩'] = df['语文'] + df['数学'] + df['英语']
df['平均成绩'] = df['总成绩'] / 3

# 将结果写入 Word 文件
document = Document()
document.add_heading('班级成绩汇总表', level=0)

if not df.empty:
    table = document.add_table(rows=1, cols=5, style='Table Grid')
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = '姓名'
    hdr_cells[1].text = '语文'
    hdr_cells[2].text = '数学'
    hdr_cells[3].text = '英语'
    hdr_cells[4].text = '平均成绩'
    for i in range(len(df)):
        row_cells = table.add_row().cells
        row_cells[0].text = df.iloc[i]['姓名']
        row_cells[1].text = str(df.iloc[i]['语文'])
        row_cells[2].text = str(df.iloc[i]['数学'])
        row_cells[3].text = str(df.iloc[i]['英语'])
        row_cells[4].text = str(df.iloc[i]['平均成绩'])
else:
    document.add_paragraph('没有数据', style='Normal')

document.save('班级成绩汇总表.docx')

实现结果如下:

姓名 语文 数学 英语 平均成绩
小明 80 90 85 85.0
小红 75 92 88 85.0

4. 小结

本文介绍了如何使用 Python 实现 Excel 数据的处理、计算和将结果写入 Word 文件中的过程。在实际工作中,我们可以根据实际需求,对代码进行适当的修改和扩展,实现更多、更复杂的自动化任务。