下面我会详细讲解一下“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 文件中的过程。在实际工作中,我们可以根据实际需求,对代码进行适当的修改和扩展,实现更多、更复杂的自动化任务。