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

yizhihongxing

以下是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技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python数据结构与算法(几种排序)小结

    下面是关于“Python数据结构与算法(几种排序)小结”的完整攻略。 1. 排序算法简介 排序算法是一种将一组数据按照一定规则排列的算法。在计算机科学中,常见的算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 2. Python实现常见排序算法 2.1 冒泡排序 冒泡排序是一种通过交换相邻元素来排序的算法。Python中,我们可以使用以下代码实现…

    python 2023年5月13日
    00
  • 如何用Pandas在Python中创建虚拟变量

    创建虚拟变量通常是数据分析过程中的一项必要工作。在Python中,我们可以使用Pandas库中的get_dummies()函数来创建虚拟变量。以下是创建虚拟变量的完整攻略: 1. 导入必要的库 首先,需要导入Pandas库。同时,如果要演示示例,也需要导入numpy库和matplotlib库。 import pandas as pd import numpy…

    python-answer 2023年3月25日
    00
  • Python学习之迭代器详解

    Python学习之迭代器详解 在Python中,迭代器(iterator)是一个非常重要的概念,它是许多高级功能和特性的基础,并且能够通过使用迭代器,更好地实现代码的可读性和代码的简洁性。本文将详细介绍什么是迭代器,如何创建一个迭代器,以及如何使用迭代器。 什么是迭代器? 迭代器是Python中的一个对象,它能够遍历(或迭代)对象的所有元素,而不需要事先知道…

    python 2023年5月14日
    00
  • 如何使用Python获取MySQL中的表的行数?

    要使用Python获取MySQL中的表的行数,可以使用Python的内置模块sqlite3或第三方库mysql-connector-python。以下是使用mysql-connector-python在MySQL中获取表的行数的完整攻略: 连接 要连接到MySQL,需要提供MySQL的主机、用户名、和密码。可以使用以下代码连接: mysql.connecto…

    python 2023年5月12日
    00
  • python获取命令行输入参数列表的实例代码

    在Python中获取命令行参数列表的方法是使用sys模块中的argv属性。argv属性是一个列表,包含了命令行输入的所有参数(包括脚本本身),它从列表下标1开始,即argv[1:]。 以下是获取命令行输入参数列表的实例代码: import sys # 打印命令行输入的所有参数 print("命令行参数列表:", sys.argv) # 打…

    python 2023年6月3日
    00
  • python实现的守护进程(Daemon)用法实例

    下面我将为你详细讲解“Python实现的守护进程(Daemon)用法实例”的完整攻略。 什么是守护进程(Daemon) 守护进程是指在后台执行的一种特殊进程,与前台进程相反,不会接受任何用户的输入、输出。守护进程通常用于执行一些与用户交互无关的系统任务,例如日志记录和备份等。 Python 实现守护进程的方法 Python 标准库中提供了一个 daemon …

    python 2023年6月2日
    00
  • Python出现segfault错误解决方法

    Python出现segfault错误解决方法 在Python中,segfault错误通常是由于内存访问错误或其他底层问题导致的。当Python解释器遇到segfault错误时,程序将崩溃并退出。本文将介绍一些常见segfault错误及其解决方法。 解决方法1:更新Python版本 如果您的Python版本过旧,可能会导致segfault错误。解决是更新Pyt…

    python 2023年5月13日
    00
  • python列表的问题

    【问题标题】:problem with python listpython列表的问题 【发布时间】:2023-04-04 00:49:01 【问题描述】: 您好,我正在尝试创建一个列表,通过 for 循环从 txt 文件中逐行读取。我在列表中遇到语法错误,但不确定如何解决问题??? import re file = open(“text.txt”,”r”) …

    Python开发 2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部