以下是Python办公自动化从Excel中计算整理数据并写入Word的完整实例教程。
目录
准备工作
在开始编写这个自动化脚本之前,我们需要安装两个依赖库xlrd和python-docx用于处理Excel和Word文件。
pip install xlrd python-docx
在安装完成后,我们可以开始编写代码了。
读取Excel数据
首先,我们需要读取Excel中的数据。假设我们有一个名为data.xlsx的Excel文件,其中包含以下数据:
ID | 姓名 | 语文 | 数学 | 英语 |
---|---|---|---|---|
1 | 张三 | 65 | 78 | 83 |
2 | 李四 | 87 | 92 | 79 |
3 | 王五 | 94 | 76 | 89 |
我们可以使用xlrd依赖库中的open_workbook函数打开Excel文件,并使用sheet_by_index方法指定要读取的工作表。
import xlrd
# 打开Excel文件
book = xlrd.open_workbook('data.xlsx')
# 获取第一个工作表
sheet = book.sheet_by_index(0)
# 获取第一行数据
headers = [sheet.cell(0, i).value for i in range(sheet.ncols)]
# 获取除第一行外的所有数据
rows = []
for i in range(1, sheet.nrows):
row = [sheet.cell(i, j).value for j in range(sheet.ncols)]
rows.append(row)
# 将数据打印出来
print(headers)
print(rows)
执行该脚本后,打印出来的结果如下:
['ID', '姓名', '语文', '数学', '英语']
[[1.0, '张三', 65.0, 78.0, 83.0], [2.0, '李四', 87.0, 92.0, 79.0], [3.0, '王五', 94.0, 76.0, 89.0]]
计算Excel数据
在读取完Excel中的数据后,我们可以开始计算数据了。假设我们需要计算每个人的总成绩和平均成绩,我们可以遍历每一行数据,将每个人的总成绩和平均成绩计算出来,并将它们添加到数据列表中。
# 计算每个人的总成绩和平均成绩
for row in rows:
total = 0
for i in range(2, 5):
total += row[i]
avg = total / 3
row.append(total)
row.append(avg)
# 将结果打印出来
print(rows)
执行该脚本后,打印出来的结果如下:
[[1.0, '张三', 65.0, 78.0, 83.0, 226.0, 75.33333333333333], [2.0, '李四', 87.0, 92.0, 79.0, 258.0, 86.0], [3.0, '王五', 94.0, 76.0, 89.0, 259.0, 86.33333333333333]]
整理数据并写入Word
在计算完数据后,我们可以开始整理数据并将它们写入Word文件。我们要用到python-docx依赖库中的Document类,这个类可以创建一个新的Word文档,使用add_paragraph方法可以在文档中添加段落(Paragraph),使用add_table方法可以添加表格(Table)。
我们可以使用一张表格来展示以上数据,首先我们需要创建一张表格,然后在前一列中添加每个人的姓名,在后面的列中添加他们的成绩数据。在表格的最后一行添加一个总计行,显示每列的总分和平均分。
from docx import Document
from docx.shared import Inches
# 创建一个新的Word文档
document = Document()
# 添加标题
document.add_heading('成绩单', 0)
# 添加表格
table = document.add_table(rows=1, cols=8)
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 = '总分'
hdr_cells[5].text = '平均分'
# 添加数据
for row in rows:
row_cells = table.add_row().cells
row_cells[0].text = row[1]
row_cells[1].text = str(row[2])
row_cells[2].text = str(row[3])
row_cells[3].text = str(row[4])
row_cells[4].text = str(row[5])
row_cells[5].text = str(row[6])
# 添加总计行
total_row = table.add_row().cells
total_row[0].text = '总计'
for i in range(2, 8):
total = 0
for row in rows:
total += row[i - 1]
total_row[i].text = str(total)
# 保存Word文档
document.save('成绩单.docx')
执行该脚本后,我们可以在文件夹中找到一个名为“成绩单.docx”的Word文件,打开它可以看到我们的数据已经被整理到了一个表格中。
完整代码
import xlrd
from docx import Document
from docx.shared import Inches
# 打开Excel文件
book = xlrd.open_workbook('data.xlsx')
# 获取第一个工作表
sheet = book.sheet_by_index(0)
# 获取第一行数据
headers = [sheet.cell(0, i).value for i in range(sheet.ncols)]
# 获取除第一行外的所有数据
rows = []
for i in range(1, sheet.nrows):
row = [sheet.cell(i, j).value for j in range(sheet.ncols)]
rows.append(row)
# 计算每个人的总成绩和平均成绩
for row in rows:
total = 0
for i in range(2, 5):
total += row[i]
avg = total / 3
row.append(total)
row.append(avg)
# 创建一个新的Word文档
document = Document()
# 添加标题
document.add_heading('成绩单', 0)
# 添加表格
table = document.add_table(rows=1, cols=8)
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 = '总分'
hdr_cells[5].text = '平均分'
# 添加数据
for row in rows:
row_cells = table.add_row().cells
row_cells[0].text = row[1]
row_cells[1].text = str(row[2])
row_cells[2].text = str(row[3])
row_cells[3].text = str(row[4])
row_cells[4].text = str(row[5])
row_cells[5].text = str(row[6])
# 添加总计行
total_row = table.add_row().cells
total_row[0].text = '总计'
for i in range(2, 8):
total = 0
for row in rows:
total += row[i - 1]
total_row[i].text = str(total)
# 保存Word文档
document.save('成绩单.docx')
以上就是Python办公自动化从Excel中计算整理数据并写入Word的完整实例教程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python办公自动化从Excel中计算整理数据并写入Word - Python技术站