python自动化办公——定制化读取Excel数据并写入到word表格

这篇具有很好参考价值的文章主要介绍了python自动化办公——定制化读取Excel数据并写入到word表格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python自动化办公——Excel写word表格

一、引言

最近到了毕业设计答辩的时候,老师让我帮毕业生写一段毕业设计的功能就是提供一个学士学位授予申请表,根据定制化需求,编写定制化代码。

二、数据准备

docx格式的word如下图。
python自动化办公——定制化读取Excel数据并写入到word表格

再提供一个Excel表格,要求可以直接读取表格里的对应内容,填入到word表格里的对应位置。表格是我自己定义的如下表:

学生姓名 所在院系 班级简称 学号(10位) 学制 身份证号 专业名称 外语A级 外语四级 外语六级 专业四级 专业八级 项目名称1 项目名称2 项目名称3 项目名称4 项目名称5 项目名称6 项目名称7 项目名称8 奖励绩点1 奖励绩点2 奖励绩点3 奖励绩点4 奖励绩点5 奖励绩点6 奖励绩点7 奖励绩点8 处分名称1 处分名称2 处分名称3 罚扣绩点1 罚扣绩点2 罚扣绩点3 处分时间1 处分时间2 处分时间3
天海 电子与信息工程学院 智能BG201 744411115555 4 52013145555 人工智能 智慧农业可视化 计算机视觉教辅 计赛国家一等奖 互联网+省二等奖 0.2 0.2 0.4 0.1 偷吃老师抽屉的饼干 撒谎的人要吞一千根针哦 0.1 0.9 2023年6年15日 2022年12月14日

三、python代码

那么根据定制化需求,我制作了三套代码。

1、方法一

我们的逻辑是:

  1. 读取Excel文件
  2. 找准word中表格对应位置与顺序
  3. 插入读取到Excel中的数据到word表格中

先展示最终嵌入到项目中的代码吧.

首先需要引入docx的库和pandas库,注意由于docx库的版本不同使用的方法也有一定差异

import docx
from docx.enum.text import WD_ALIGN_PARAGRAPH
import pandas as pd

接下来进行第一步,读取表格数据,并打开word

#打开或创建word文档
doc_name = "test.docx"
doc = docx.Document(doc_name)
# 读取Excel数据
df = pd.read_excel('source.xlsx', sheet_name='info')

content = [list(row) for _, row in df.iterrows()]

print(content)

人为分析了word的表格索引位置,并写入index中

table = doc.tables[0]

index = [[0,3],[0,12],[1,3],[1,12],[2,3],[2,12],[5,3],
[5,5],[5,10],[5,13],[5,16],[7,7],[7,16],[8,7],[8,16],
[9,7],[9,16],[10,7],[10,16],[12,3],[12,7],[12,11],
[13,3],[13,7],[13,11],[14,3],[14,7],[14,11]]

写入28条数据并将空的数据输入空格,设置居中和宋体字体,随后将输出的word保存为学号+.docx

for i in range(0,28):
	cell = table.cell(index[i][0],index[i][1])
	cell.text = str(content[0][i])
	if cell.text == 'nan':
		cell.text = ' '
	print('%d:'%i,cell.text)
	cell.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
	for par in cell.paragraphs:
		for run in par.runs:
			run.font.size = docx.shared.Pt(12)
			run.font.name = '宋体'


filename = str(df.iloc[0, 3])
doc.save(filename + '.docx')

完整代码如下:

    file_name = "D:\\poppler-0.67.0_x86\\test1.docx"
    doc = docx.Document(file_name)
    df = pd.read_excel('D:\\poppler-0.67.0_x86\\学员表.xlsx', sheet_name='info')
    print(df)
    for item in range(df.shape[0]):
        content = [list(row) for _, row in df.iterrows()]
        table = doc.tables[0]
        index = [[0, 3], [0, 12], [1, 3], [1, 12], [2, 3], [2, 12], [5, 3],
                 [5, 5], [5, 10], [5, 13], [5, 16], [7, 7], [7, 16], [8, 7], [8, 16],
                 [9, 7], [9, 16], [10, 7], [10, 16], [12, 3], [12, 7], [12, 11],
                 [13, 3], [13, 7], [13, 11], [14, 3], [14, 7], [14, 11]]
        for i in range(0, 28):
            cell = table.cell(index[i][0], index[i][1])
            cell.text = str(content[item][i])
            if cell.text == 'nan':
                cell.text = ' '
            cell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
            for par in cell.paragraphs:
                for run in par.runs:
                    run.font.size = docx.shared.Pt(12)
                    run.font.name = '宋体'

        file_name = 'D:\\poppler-0.67.0_x86\\doc_output\\' + str(df.iloc[item, 3]) + '.docx'
        # file_name = "D:\\poppler-0.67.0_x86\\7414119104.docx"
        doc.save(file_name)
        print("保存成功!")

这样一来,Excel里所有的行都会输出为word文件,有几行数据就能输出几个word,且以学号命名。
缺点:需要自己分析模板word并写死索引

2、方法二

使用的方法二就是精简版的方法一,原理就是不考虑word表格分布写入数据,而是自己在代码里写一个新的word表格进行插入数据。

具体步骤如下:

  1. 读取Excel数据
  2. 生成、配置word的表格和名称
  3. 填写表格
  4. 保存word

代码如下:

这里我就是定义了两个循环来生成简单的37行2列的表格并填写数据

import pandas as pd
from docx import Document
from docx.shared import Inches

# 读取Excel数据
df = pd.read_excel('source.xlsx', sheet_name='info')

# 获取表格标题和内容
header = list(df.columns)
content = [list(row) for _, row in df.iterrows()]

# 生成Word文件名
filename = df.iloc[0, 3]
# 配置Word
document = Document('output.docx')
table = document.add_table(rows=37, cols=2, style='Table Grid')

# 填写表格
for i, text in enumerate(header):
    table.cell(i, 0).text = text
for i, row in enumerate(content):
    for j, text in enumerate(row):
        table.cell(j, i+1).text = str(text)

# 保存Word文件
document.save(f'{filename}.docx')

3、方法三

使用字符串匹配来进行变量的写入,缺点:无法进行表格写入,可以在无表格的word文章中发挥很大优势。

可以使用pyqt5来制作一个小工具进行文字替换。这里我也实现了,但由于代码量过大,这里不做介绍啦,有需要的可以私信我,再进行更新。

python自动化办公——定制化读取Excel数据并写入到word表格文章来源地址https://www.toymoban.com/news/detail-498415.html

到了这里,关于python自动化办公——定制化读取Excel数据并写入到word表格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python利用Excel读取和存储测试数据完成接口自动化教程

    http_request2.py用于发起http请求 do_excel2.py完成对excel中用例的读、写、统计 test_case2.xlsx存储​​​​​​测试用例   补充知识: python用unittest+HTMLTestRunner+csv的框架测试并生成测试报告 直接贴代码: csv文件格式: 备注: 使用python处理中文csv文件,并让execl正确显示中文(避免

    2024年01月20日
    浏览(31)
  • Python自动化测试,Excel数据驱动读取 xlrd实战(超详细)

    xlrd模块安装 xlrd常用方法 1、导入模块 import xlrd 2、打开文件 3、获取sheet 获取所有sheet名字:x1.sheet_names() 获取sheet数量:x1.nsheets 获取所有sheet对象:x1.sheets() 通过sheet名查找:x1.sheet_by_name(\\\"test”) 通过索引查找:x1.sheet_by_index(3) 输出:

    2024年02月11日
    浏览(38)
  • python办公自动化(6)——读取word文档

    因为我们要进行文件相关的操作,所以需要在一开始使用import导入Python内置的os模块。 我们需要先获取该文件夹下所有的答题卡列表,再使用for循环遍历文件夹中所有学生的答题卡,以便之后逐个读取信息。 完成了第一个步骤,接下来,我们就需要在for循环里,依次获取每位

    2023年04月08日
    浏览(46)
  • python自动化办公——读取PPT写入word表格

    📖由于我们知识图谱课程需要将课堂小组汇报的PPT总结成word文档,而我觉得一页一页复制PPT中的内容比较麻烦,所以直接安排:读PPT写word 🚗需要操作PPT幻灯片和word文档,所以需要导入docx 和pptx两个包 这里我的docx使用的是0.2.4版本 pptx使用的是0.6.21版本供参考 引入os、ppt

    2024年02月11日
    浏览(32)
  • python-自动化篇-办公-Excel-Openpyxl库

    openpyxl模块是一个读写Excel 2010文档的 Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。新建、读取、保存工作簿。Openpyxl 的安装和其它

    2024年02月20日
    浏览(37)
  • Python实现自动化办公(使用第三方库操作Excel)

    相关知识: 获取所有工作表的数目 获取所有工作表的名称 获取一张表中单元格的行数 获取一张表中单元格的列数   批量读取数据:【代码】 注意openpyxl 和前面的xlrd不一样,openpyxl读取的行列是从1开始的,这就对应了Excel表格中的行列的位置 读取所有行中的所有单元格,并

    2024年01月19日
    浏览(36)
  • 【办公自动化】使用Python一键提取PDF中的表格到Excel

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、Python处理Excel 二、提取PDF表格到excel 三、往期推荐 文末推荐  文末福利   Pyth

    2024年02月13日
    浏览(42)
  • 【办公自动化】使用Python批量处理Excel文件并转为csv文件

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 前言 一、Python处理Excel 二、批量处理Excel文件并转为csv文件 三、往期推荐          

    2024年02月10日
    浏览(34)
  • 【办公自动化】在Excel中按条件筛选数据并存入新的表

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、Python处理Excel 二、在Excel中按条件筛选数据并存入新的表 三、往期推荐 四、文末

    2024年02月07日
    浏览(32)
  • 怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel)

    本代码偏向处理高校教务处的工作 休学或请假模板如下: 需求说明: 代码如下: 重要知识点补充

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包