使用 python 创建&更改 word 文档

摘要:
使用python修改word文档。注意:这一要求是教师希望自动识别word文档中指定位置的分数,并填写相应的表格#创建新的空文档document=document()#打开现有文档document=document#注意上述语句的斜线方向#打开文件时可以指定路径和文件名,保存时也是如此。如果未指定默认的当前工作目录,请使用document。savedocument save命令创建一个Document对象,并可以向其中写入数据。需要注意的是,创建的文件目录位于当前python的“工作目录”下。

使用 python 修改 word 文档

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

一、安装 python-docx 库文件

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

pip install python-docx

安装效果如下图:
安装库文件

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

from docx import Document

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

#新建空文档
document = Document()

#打开已经存在的文档
document = Document(“d: emp/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 文档》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇@JsonFormat、@JSONField、@DateTimeFormat的使用以及其区别【转载】蓝绿部署、红黑部署、AB测试、灰度发布/金丝雀发布、滚动发布的概念与区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python基础:数值(布尔型、整型、长整型、浮点型、复数)

一、概述 Python中的 数值类型(Numeric Types)共有5种:布尔型(bool)、整型(int)、长整型(long)、浮点型(float)和复数(complex)。 数值类型支持的主要操作如下: 操作 说明 bool int long float complex x ** y 指数运算 √ √ √ √ √ +x 符号不变 √...

使用yum安装php72

1.执行yum search php72w查看自己的yum源有没有php72 如果自己有安装其它php版本先执行yum -y remove php* 2.没有php72执行以下命令扩展yum库,以下命令来自https://webtatic.com/packages/php72/(想看自行查看) yum install epel-release rpm -...

Linux下添加php的zip模块

./configure --with-php-config=/usr/local/php/bin/php-config extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20180731/zip.so Linux下添加php的zip模块 今天早上开发的人员过来跟我说,测试机上的XX项目...

使用Python读写Kafka

本篇会给出如何使用python来读写kafka, 包含生产者和消费者. 以下使用kafka-python客户端 生产者 爬虫大多时候作为消息的发送端, 在消息发出去后最好能记录消息被发送到了哪个分区, offset是多少, 这些记录在很多情况下可以帮助快速定位问题, 所以需要在send方法后加入callback函数, 包括成功和失败的处理 # -*- co...

Python多线程----线程池以及线程实现异步任务

Python多线程----线程池 需求:假设我们现在有一个多线程项目,每有一个用户连接进来,我们的服务器就会创建一个线程。而我们的服务器最多能够承载100个线程,再多就会崩溃。为了防止恶意用户伪装真实用户构建大量的访问来让我们的服务器崩溃,现在需要对线程数量进行限制,一共只有100个线程,并且当一个用户访问结束以后线程会自动归还,等待下一个用户访问。如果1...

pip离线安装Bottleneck报Error解决

1. 前言 操作系统:centos7.2 python版本:3.7 pip版本:20.2.4 公司一个AI项目需要部署,但是客户的服务器环境是在内网,无法联网更新,于是在公司开发服创建了一个同样的环境,离线下载安装包后再进行安装,关于离线安装可以参考:python使用pip离线安装库 因为使用了一个叫fastai的库,需要依赖Bottleneck,然后这个...