使用 python 修改 word 文档

说明:这个需求是老师想要一个自动识别 word 文档中指定位置的分数,并填入相应表格。
使用库 python-docx 的官方文档地址是:python-docx

一、安装 python-docx 库文件

在 cmd 命令行中使用以下命令安装库文件

pip install python-docx

安装效果如下图:

二、引入库,创建&打开&保存 docx 文档

from docx import Document

这个命令引入了我们上面安装的库文件,这时我们便可以使用相应的命令进行创建修改文档了。

#新建空文档
document = Document()

#打开已经存在的文档
document = Document(“d:\temp/python/test.docx”)
#注意上方语句的斜线方向
#打开文件可以指定路径和文件名,保存的时候亦同,如不指定默认当前工作目录

document.save(“当前目录保存.docx”)
document.save(“d:\python/指定目录保存.docx”)

这个命令变创建了一个 Document 对象,并且可以往里面写入数据了。
需要说明的是创建的文件目录在当前 python 的 “工作目录” 下面。

import os
#获取当前目录
os.getcwd()

三、修改文档

1、添加标题

#添加内容为 “This is a title" 大纲级别为 2 的标题
document.add_heading(“This is a title”,2)
#下面这种写法和上面的写法效果相同
document.add_heading(“This is a title”,level=2)

当大纲级别为 0 的时候,便是居中的文档题目,默认为 1 。
官方文档里面有一个这样的写法:

document.add_paragraph(‘Intense quote’, style=‘Intense Quote’)
#>但是我没有实验成功。提示 style 参数不存在,我换成中文 “样式” 依然不可以。

2、添加段落

document.add_heading(“这是标题”)
document.add_paragraph(“听说这样直接加入的段落同时会加入结束符”)
document.add_paragraph(“如果这一行与上一行换行了,就说明这是两个段落”)

下图是效果图,有的字体看着好像加粗了应该是字体格式问题,还有 word 兼容问题。查看了一下字体,使用的是 MS Gothic 格式的字体。

==3、我们可以发现上面的方法,每写一句话都会产生换行,==也就是开始新段落。那么有没有方法接着上一次的写呢?有的,看如下代码。

p = document.add_paragraph(“这是一个新段落的开始。”)
p.add_run(“这句话应该是接着上面的写的。”)
p.add_run(“这句话当然也是,而且是粗体”).bold = True
p.add_run(“然后再来个斜体。”).italic = True


4、添加图片
官方示例代码如下:

document.add_picture(‘monty-truth.png’, width=Inches(1.25))
#实践过程中发现 Inches 无法识别,图片添加失败
document.add_picture(‘monty-truth.png’)
#如上,去掉宽度设定后可以添加成功,但是无法控制其大小。

5、添加表格
官方代码示例如下:

records = (
(3, ‘101’, ‘Spam’),
(7, ‘422’, ‘Eggs’),
(4, ‘631’, ‘Spam, spam, eggs, and spam’)
)
table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = ‘Qty’
hdr_cells[1].text = ‘Id’
hdr_cells[2].text = ‘Desc’
for qty, id, desc in records:
row_cells = table.add_row().cells
row_cells[0].text = str(qty)
row_cells[1].text = id
row_cells[2].text = desc
#添加分页符
document.add_page_break()

这个例子我没有做过多的测试,效果如下图,表格正常,只是没有线。

三、需求实现阶段

目前只有思路,具体代码待进一步测试实现。整体规划如下:

1、将所有的学生作业放到一个文件夹下,使用代码获取当前路径,及当前路径下所有文件名。
2、将获取的目录下文件名及其过程写入日志保存,以备查验。
3、使用文件名按顺序读取上一步获取的文档,使用正则匹配提取姓名和学号,写入表格相应位置。
4、使用文档模块循环读取上一步文档内容,正则匹配到指定位置获取分数值,写入表格相应位置。
5、在3和4步骤之间循环执行,直到所有文件读写完毕,程序退出,日志保存。
**注:**日志需要保存第 1 步获取的所有文件名,及预提取的姓名和学号。和第 3、4 步骤写入表格位置的数据。

使用 python 创建更改 word 文档相关推荐

  1. python编辑word书签_小伙发现了Python中编写word文档的库,编辑文字方便多了

    新的一年,小编又和大家见面啦.十分开心又和大家分享干货了~ Word文档相信广大的办公室家族并不陌生吧?今天咱们聊聊Python中一个可以用来读写word文档的Python库,编辑文档分分钟的事情哦~ ...

  2. python实现生成word文档并转为pdf

    python实现生成word文档,格式转为pdf 使用的是python-docx模块,在生成word文档后转为pdf格式是使用的是docx2pdf中的convert(使用convert转换时,要先创建 ...

  3. 小伙发现了Python中编写word文档的库,编辑文字方便多了

    新的一年,小编又和大家见面啦.十分开心又和大家分享干货了~ Word文档相信广大的办公室家族并不陌生吧?今天咱们聊聊Python中一个可以用来读写word文档的Python库,编辑文档分分钟的事情哦~ ...

  4. python批量提取word指定内容_使用python批量读取word文档并整理关键信息到excel表格的实例...

    目标 最近实验室里成立了一个计算机兴趣小组 倡议大家多把自己解决问题的经验记录并分享 就像在CSDN写博客一样 虽然刚刚起步 但考虑到后面此类经验记录的资料会越来越多 所以一开始就要做好模板设计(如下 ...

  5. ASP.NET里创建Microsoft Word文档

    原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 本文是应在ASP.NET里创建Microsoft Word文档之需而写的.这篇文章演示了在ASP.NET里怎么创建 ...

  6. python新建word文档_使用Python 自动生成 Word 文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  7. python自动生成和读取word_使用Python自动生成Word文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  8. Word处理控件Aspose.Words功能演示:使用C#创建MS Word文档

    Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word. A ...

  9. Python动态修改Word文档内容,保留格式样式,并批量生成PDF

    Python动态修改Word文档内容,保留格式样式,并批量生成PDF 前言 一.需要安装的库 二.核心逻辑-替换 前言 假如你有一个Word模版文档,要在里面填写人员信息,但人员有成百上千个,手动填起 ...

最新文章

  1. python bottle web框架简介
  2. ORACLE 11g 数据库 java jdk版本匹配
  3. matlab中利用princomp实现PCA降维
  4. 透过汇编另眼看世界之多继承下的虚函数函数调用
  5. 关于Oracle回收站的一些操作
  6. Qt 中使用dll文件的舒服用法 generateDocumentation()函数 乱码解决
  7. 小手拍拍机器人_幼儿园互动儿歌游戏,小朋友瞬间变听话!
  8. jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端
  9. 计算机软件总体上分为,山大2017春季班期末考试 信息系统B
  10. [openjudge] 2797最短前缀 Trie
  11. 什么是面向对象_什么是面向对象?新手程序员必掌握的技能
  12. mysql编码丢了_记住:永远不要在 MySQL 中使用 UTF-8
  13. 06MySQL基本函数的使用
  14. 提问:Server Application Unavailable
  15. 抖音等多款软件涉代码抄袭,字节跳动被诉赔22.74亿元;iPhone12系统更新后性能退回3年前;Qt 6.1正式发布|极客头条...
  16. pythonyield详解_yield详解
  17. linux大华客户端,rdesktop 下载-rdesktop(Linux下远程桌面客户端) 1.8.2 官方版 - 河东下载站...
  18. 七牛 html 上传,在七牛上传之后如何自己自定义上传完成处理并在页面显示。_html/css_WEB-ITnose...
  19. 某网站cookie加密黑盒调用与算法还原
  20. Java项目:小区物业管理系统(java+Springboot+ssm+mysql+maven+jsp)

热门文章

  1. 8c SQL手册 六
  2. go 语言之“查找一个字符串中汉字个数”
  3. 关于华为昆仑关键业务服务器
  4. ElasticSearch 数据迁移
  5. 怎么从STM32将代码移植到海思开发板Hi3861
  6. 爱奇艺校招map优先队列笔试题字符串的价值
  7. 使用4G模块实现IOT_Python库中,如何使用jieba模块来实现古典名著《西游记》的分词...
  8. Twitter 账号爬取
  9. java中左移运算符解释_java左移右移运算符
  10. 免费好用的征集工具 | 玩转穿搭征集、好物征集、攻略征集