使用 python 创建&更改 word 文档
使用 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 文档的更多相关文章
- python自动化之word文档
#########################docx文件############################ ''' .docx文件有很多结构,有3种不同的类型来表示 在最高一层,Docum ...
- ASP.NET里创建Microsoft Word文档
原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 本文是应在ASP.NET里创建Microsoft Word文档之需而写的。这篇文章演示了在ASP.NET里怎么创建 ...
- Python批量创建word文档(1)- 纯文字
Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.最后贴上自己的联系方式.代码如下: 1 ''' 2 #python根据需求新 ...
- Python将word文档批量转PDF
前面有一篇<Python批量创建word文档(2)- 加图片和表格>的文章,利用这篇文章创建的word文档来批量转PDF文档.代码: 1 ''' 2 #python批量将word文档转换成 ...
- MVC 创建Word文档
/// <summary> /// 创建一个word /// </summary> /// <returns></returns> public Act ...
- 使用python编辑和读取word文档
python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明. python-docx官方文档地址 使用python新建一个word文档,操作就像文档里介绍的那样: fr ...
- word文档的python解析
主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parse 1. 文件格式装换 因为很多各种各样的原因,至今还有一些word文档是doc的格式存的,对于这种,如 ...
- 向Docx4j生成的word文档中添加布局--第二部分
原文标题:Adding layout to your Docx4j-generated word documents, part 2 原文链接:http://blog.iprofs.nl/2012/1 ...
- .NET通过调用Office组件导出Word文档
.NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word ...
随机推荐
- 原生js实现随着滚动条滚动,导航会自动切换的效果
最近学习前端,把前面用原生js写的一段有关tab切换效果的代码贴上,实现的效果比较简陋,请大家见谅 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- 【JDK】JDK源码分析-HashMap(2)
前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理.但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题. 这里再贴一下 HashMap ...
- 为Python安装pip
Python及操作系统的支持 Python 2.6, 2.7, 3.2, 3.3, 3.4 Unix/Linux, OS X, 以及 Windows 默认包含 Python 2.7.9 及以后的版 ...
- [JS]使用JavaScript实现简易俄罗斯方块
[JS]使用JavaScript实现简易俄罗斯方块 首先,大家可以点击此处来预览一下游戏效果,随后将会以此为模板讲解如何使用JavaScript实现这样一个简易的俄罗斯方块项目(以下简称"该 ...
- 如何理解SiamRPN++?
如何理解SiamRPN++? 目标跟踪: 使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法. 孪生网络结构: 在进入到正式理解SiamRPN++之前 ...
- FastDFS源码学习(一)FastDFS介绍及源码编译安装
FastDFS是淘宝的余庆主导开发的一个分布式文件系统,采用C语言开发,性能较优.在淘宝网.京东商城.支付宝和某些网盘等系统均有使用,使用场景十分广泛. 下图来源:https://blog.csdn. ...
- .net 4.0 以下HttpWebRequest Header 修改hosts方法
.net 4.0 以下HttpWebRequest Header 修改hosts方法 特此记录 public class CusteredHeaderCollection : WebHeaderCol ...
- 在eclipse里面给maven项目打包
eclipse中的“maven install”是用maven打包工程的意思. mvn install 是将用户打包好的jar包安装到本地仓库中,一般没有设置过的话默认在用户目录下的 .m2\下面. ...
- .gitignore排除(不忽略)二级以上目录下的文件或目录
在.gitignore中,结合使用/*和!filename的语法,可以达到除特定文件或目录外全部忽略的目的.但当希望不忽略的文件或目录在二级或多级目录下时,如果这样写 /* !/sub/subsub/ ...
- 用sort 排序
这两天看了一个比较好的sort总结,所以转载了一下 阅读目录 1.sort 2.sort简介 3.sort扩展 1.sort 使用:#include <algorithm> using ...