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

以下是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分析nignx访问日志脚本分享

    接下来我将详细讲解一下“Python分析Nginx访问日志脚本分享”的完整攻略。 1. 环境准备 首先,我们需要安装Python 3.x,并且安装以下常用库: requests matplotlib seaborn pandas 安装方法如下: pip install requests matplotlib seaborn pandas 2. 下载Nginx…

    python 2023年5月23日
    00
  • Python 使用os.remove删除文件夹时报错的解决方法

    当使用Python的os模块删除文件夹时,可能会遇到如下错误: FileNotFoundError: [Errno 2] No such file or directory: ‘example_dir’ 这个错误通常是由于文件夹不存在而导致的。为了避免这种错误,我们需要确保待删除的文件夹实际存在于磁盘中。下面是实现这一目标的一些步骤。 检查文件夹是否存在 在…

    python 2023年5月13日
    00
  • Python使用MD5加密字符串示例

    下面是“Python使用MD5加密字符串示例”的完整攻略。 具体步骤 步骤1:导入hashlib 首先,我们需要导入Python的hashlib模块,以便使用其中的MD5加密功能。在Python中,可以通过以下方式导入hashlib模块: import hashlib 步骤2:创建MD5加密对象 要使用MD5加密字符串,我们需要创建一个MD5加密对象。创建方…

    python 2023年6月2日
    00
  • python实现AES和RSA加解密的方法

    以下是关于 Python 实现 AES 和 RSA 加解密的完整攻略: 什么是 AES 和 RSA 加解密 AES(Advanced Encryption Standard,高级加密标准)和 RSA(Rivest–Shamir–Adleman)都是常用的加密算法。其中,AES 是对称加密算法,加密和解密使用同一个密钥,而 RSA 是非对称加密算法,加密和解密…

    python 2023年6月3日
    00
  • python实现邮件循环自动发件功能

    下面我将为您讲解实现“python实现邮件循环自动发件功能”的完整攻略。 1. 准备工作 在实现这一功能之前,我们需要准备好以下内容: 常见邮件服务商账号,如QQ邮箱、163邮箱等; 已安装Python,建议安装较高版本的Python,如Python3.6+; 安装Email包和smtplib库,Email包专门用于构造邮件内容,smtplib库用于和邮件服…

    python 2023年6月5日
    00
  • python实现带界面的井字棋小游戏

    下面我将详细讲解“Python实现带界面的井字棋小游戏”的完整攻略。该游戏的实现需要用到Python的Tkinter库,所以需要先安装Python及Tkinter库。以下是具体步骤: 首先,需要导入Tkinter库,用于创建GUI界面。 from tkinter import * 创建一个窗口,并设置窗口的大小和标题: window = Tk() windo…

    python 2023年5月19日
    00
  • Python 用Counter做映射

    当我们需要对某些对象进行计数统计时,使用Python的Counter类可以实现快速、方便并且可读性高的代码。在这里,我将给大家介绍如何使用Python的Counter类进行映射,包括如何创建计数器、如何更新计数器、如何访问计数器数据及如何进行排序等。下面进入正题。 创建计数器 要使用Counter类,首先需要在代码中导入该库: from collection…

    python-answer 2023年3月25日
    00
  • Python文件与文件夹常见基本操作总结

    让我来详细讲解“Python文件与文件夹常见基本操作总结”的完整攻略。 标题 本文的标题是“Python文件与文件夹常见基本操作总结”。 介绍 Python 是一种易于学习、易于阅读和易于使用的高级编程语言,常常用来进行文件和目录操作。在 Python 的 os 模块中包含了很多操作文件和目录的函数,本文将介绍 Python 中常见的文件与文件夹基本操作。 …

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部