使用 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文档

    #########################docx文件############################ ''' .docx文件有很多结构,有3种不同的类型来表示 在最高一层,Docum ...

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

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

  3. Python批量创建word文档(1)- 纯文字

    Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.最后贴上自己的联系方式.代码如下: 1 ''' 2 #python根据需求新 ...

  4. Python将word文档批量转PDF

    前面有一篇<Python批量创建word文档(2)- 加图片和表格>的文章,利用这篇文章创建的word文档来批量转PDF文档.代码: 1 ''' 2 #python批量将word文档转换成 ...

  5. MVC 创建Word文档

    /// <summary> /// 创建一个word /// </summary> /// <returns></returns> public Act ...

  6. 使用python编辑和读取word文档

    python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明. python-docx官方文档地址 使用python新建一个word文档,操作就像文档里介绍的那样: fr ...

  7. word文档的python解析

    主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parse 1. 文件格式装换 因为很多各种各样的原因,至今还有一些word文档是doc的格式存的,对于这种,如 ...

  8. 向Docx4j生成的word文档中添加布局--第二部分

    原文标题:Adding layout to your Docx4j-generated word documents, part 2 原文链接:http://blog.iprofs.nl/2012/1 ...

  9. .NET通过调用Office组件导出Word文档

    .NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word ...

随机推荐

  1. 小白学 Python 数据分析(17):Matplotlib(二)基础操作

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  2. iOS 原生库(AVFoundation)实现二维码扫描,封装的工具类,不依赖第三方库,可高度自定义扫描动画及界面(Swift 4.0)

    Create QRScanner.swift file // // QRScanner.swift // NativeQR // // Created by Harvey on 2017/10/24. ...

  3. Gogs

    Deploy Gogs(node2) 1 create gogs account sudo adduser git su git cd /home/git mkdir /home/git/.ssh 2 ...

  4. 关于手机淘宝3.25bug我的一些思考与建议

    这两天被手淘ios版3.25bug刷屏了,影响还是挺大的,仅3.25日当天截止到下午5点在微博上的话题阅读量,已经突破8000万.给广大网友带来一次吃瓜盛宴.我们先简单回顾下这个bug的故事线: 我查 ...

  5. 如何让Docker镜像飞起来

    前言 Docker用起来非常爽,尤其是用于DevOps实践时.但是,当你在国内或者本地拉取镜像时,经常会碰到各种“便秘”——要么镜像拉取缓慢,要么时断时连,要么连接超时! 当我们的镜像又比较大时(比如 ...

  6. 一个完整的机器学习项目在Python中演练(三)

    大家往往会选择一本数据科学相关书籍或者完成一门在线课程来学习和掌握机器学习.但是,实际情况往往是,学完之后反而并不清楚这些技术怎样才能被用在实际的项目流程中.就像你的脑海中已经有了一块块"拼 ...

  7. Tensorboard 详解(上篇)

    花间提壶华小厨 1. Tensorboard简介 对大部分人而言,深度神经网络就像一个黑盒子,其内部的组织.结构.以及其训练过程很难理清楚,这给深度神经网络原理的理解和工程化带来了很大的挑战.为了解决 ...

  8. 阿里开源首个移动AI项目,淘宝同款推理引擎

    淘宝上用的移动AI技术,你也可以用在自己的产品中了. 刚刚,阿里巴巴宣布,开源自家轻量级的深度神经网络推理引擎MNN(Mobile Neural Network),用于在智能手机.IoT设备等端侧加载 ...

  9. CodeForces - 1249E 楼梯和电梯

    题意:第一行输入n和c,表示有n层楼,电梯来到需要时间c 输入两行数,每行n-1个,表示从一楼到二楼,二楼到三楼.....n-1楼到n楼,a[ ] 走楼梯和 b[ ] 乘电梯花费的时间 思路:动态规划 ...

  10. 本机安装oracle12C

    1.先安装的oracle12C,创建了oracle主目录用户admin,其中主目录用户为admin,口令为123456. 2.其次创建监听,再创建数据库实例. 3.全局数据库名称为orcl.lan,管 ...