首页 > 编程语言 >python-docx - 1

python-docx - 1

时间:2023-05-20 11:22:38浏览次数:48  
标签:docx python doc add paragraph import Document

python-docx 用于创建和更新Word文件的python库

1. 安装

pip3 install python-docx -i https://mirrors.aliyun.com/pypi/simple

2. 创建与保存文件

#导入Document
from docx import Document

# 创建一个新文档
doc = Document()
print(type(doc))  # <class 'docx.document.Document'>

# doc=Document("file.docx") 可以打开一个新文档

# 保存文件
doc.save("hello.docx")

3. 标题

from docx import Document

doc = Document()
# 添加标题
# text=内容, level=级别 (1-9)
heading = doc.add_heading(text="1级标题", level=1)
# 返回的是一个段落,说明标题也是段落的一种
print(type(heading)) # <class 'docx.text.paragraph.Paragraph'>

for i in range(2, 10):
    doc.add_heading(text=f"{i}级标题", level=i)
    
doc.save("hello.docx")

4. 段落

4.1 添加段落

from docx import Document

doc = Document()

# 在文档尾添加一个段落,返回这个段落的引用
p1 = doc.add_paragraph(text="第一段")
p2 = doc.add_paragraph(text="第二段")
# 插入段落
p1_5 = p2.insert_paragraph_before("第二段前插入一段")

doc.save("hello.docx")

4.2 指定段落样式

4.2.1 无序列表

from docx import Document

doc = Document()
doc.add_paragraph("三国演义", style="List Bullet")
doc.add_paragraph("红楼梦", style="List Bullet")
p = doc.add_paragraph("西游记")
p.style = "List Bullet"
doc.save("hello.docx")

List Bullet生成一个无序列表。

4.2.2 有序列表

from docx import Document

doc = Document()
for p in ["红楼梦", "三国演义", "西游记", "水浒传"]:
    doc.add_paragraph(p, style="List Number")
doc.save("hello.docx")

List Number 生成一个有序列表。

4.3.3 添加一个新样式,并应用这个样式

from docx import Document
from docx.enum.style import WD_STYLE_TYPE
from docx.shared import Pt, RGBColor

doc = Document()
# 添加一个段落样式,在word样式中会多出一个my_style的样式
style = doc.styles.add_style('my_style', WD_STYLE_TYPE.PARAGRAPH)
# 设置样式的:字号,字体,颜色
style.font.size = Pt(18)
style.font.name = "Showcard Gothic"
style.font.color.rgb = RGBColor(255, 0, 0)

# 创建并应用段落样式
doc.add_paragraph("Hello world!", style=style)
doc.save("hello.docx")

4.3 段落的对齐方式

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

doc = Document()
p1 = doc.add_paragraph("hello")
# 左对齐
p1.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT

p2 = doc.add_paragraph("hello")
# 居中对齐
p2.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
doc.save("hello.docx")

对齐方式有:

对齐方式 说明
LEFT 0 左对齐
RIGHT 1 右对齐
CENTER 2 居中对齐
JUSTIFY 3 两端对齐
DISTRIBUTE 4 分散对齐

4.4 段落的缩进

from docx import Document
from docx.shared import Cm

text = '燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?——是有人偷了他们罢:那是谁?又藏在何处呢?是他们自己逃走了罢:如今又到了哪里呢?'

doc = Document()
p1 = doc.add_paragraph(text)
# 左缩进二厘米
p1.paragraph_format.left_indent = Cm(2)

doc.save("hello.docx")

缩进的方式有:

缩进 说明
left_indent 左缩进
right_indent 右缩进
first_line_indent 首行缩进

常用单位:

  • Cm厘米
  • Pt 磅
  • Mm 毫米
  • Inches 英寸

4.4.1 悬挂缩进在哪里?

首先缩进支持负值,就相当于悬挂缩进了,如:

from docx import Document
from docx.shared import Cm

text = '燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?——是有人偷了他们罢:那是谁?又藏在何处呢?是他们自己逃走了罢:如今又到了哪里呢?'

doc = Document()
p1 = doc.add_paragraph(text)
# 缩进二厘米(整体向右移动2)
p1.paragraph_format.left_indent = Cm(2)
# 首先缩进-2厘米,首先向左移动2厘米,整体效果就是悬挂缩进
p1.paragraph_format.first_line_indent = Cm(-2)

doc.save("hello.docx")

4.4.2 如何首行缩进2个字符

from docx import Document
from docx.shared import Cm, Pt

text = '燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?——是有人偷了他们罢:那是谁?又藏在何处呢?是他们自己逃走了罢:如今又到了哪里呢?'

doc = Document()
p1 = doc.add_paragraph(text)
# 先设置字号(三号),之后获取字体对应字号的大小*2 即可
p1.style.font.size = Pt(16)
p1.paragraph_format.first_line_indent = p1.style.font.size * 2
doc.save("hello.docx")

4.5 段落间距(段前,段后)

from docx import Document
from docx.shared import Cm, Pt

text = '燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?——是有人偷了他们罢:那是谁?又藏在何处呢?是他们自己逃走了罢:如今又到了哪里呢?'

doc = Document()
for i in range(5):
    p1 = doc.add_paragraph(text)
    # 段前
    p1.paragraph_format.space_before = Pt(20)
    # 段后
    p1.paragraph_format.space_after = Pt(10)
doc.save("hello.docx")

4.6 行距

from docx import Document
from docx.shared import Cm, Pt

text = '燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?——是有人偷了他们罢:那是谁?又藏在何处呢?是他们自己逃走了罢:如今又到了哪里呢?'

doc = Document()
p = doc.add_paragraph(text)
# 1.5倍行距
p.paragraph_format.line_spacing = 1.5

p = doc.add_paragraph(text)
# 24磅行距
p.paragraph_format.line_spacing = Pt(24)
doc.save("hello.docx")

4.7 分页属性

用于控制段落在页面边界附近的行为

  • keep_together 段中不分页

  • keep_with_next 与下段同页

  • page_break_before 段前分页

  • widow_control 孤行控制

# 这四个属性可以设置为True, False, None
p.paragraph_format.widow_control = True

5. 添加硬分页

当一页没满,希望在另一页继续,则可以添加一个分页符。

from docx import Document

doc = Document()
for i in range(1, 5):
    doc.add_paragraph(f"第{i}页")
    doc.add_page_break()
doc.save("hello.docx")

标签:docx,python,doc,add,paragraph,import,Document
From: https://www.cnblogs.com/three-sheep/p/17416940.html

相关文章

  • 用python处理word文档的操作
    提取超链接fromdocximportDocument注意docx包不是python自带的包需要下载下一篇,我会给大家说相关的下载,可以点这里跳转到下一篇博客fromdocximportRTimportred=Document('D:\无名字的文件夹\python练习\材料.docx')forpind.paragraphs:rels=d.part.relsforrel......
  • Python潮流周刊#1:如何系统地自学Python?
    这里记录每周值得分享的Python及通用技术内容,部分内容为英文,已在小标题注明。(本期标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)文章&教程1、编程语言的错误处理模式文章讨论了编程中处理错误的四种常见方法:返回错误代码(C、Go)、异常(Java、C#、Python、C++)、回调函数(Jav......
  • 使用Python爬取给定网页的所有链接(附完整代码)
    此脚本从给定的网页中检索所有链接,并将其保存为txt文件。(文末有完整源码)这是一个简单的网络爬虫示例,使用了requests库来发送HTTP请求并获取网页内容,使用BeautifulSoup库来解析网页内容。代码解释如下:1.导入所需的库导入requests库并将其重命名为rq,用于发送HTTP请求和获......
  • python -- pandas常见的一些行、列操作方法(感兴趣的,可以跟着一起练练手)
     这篇文章分享一下pandas常见的一些行、列操作方法,比较基础,感兴趣的童鞋可以看看。 首先,我们用“random.seed(inti)” 生成一组测试数据。对于random.seed()有兴趣进一步了解的,可以前往阅读 python--numpy.random.seed() 如果“pipinstallpandas”遇到问题,可参考......
  • Python学习
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,......
  • java调用python并且实现RESTAPI
    在Eclipse中创建springboot工程(maven)配置pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocati......
  • python内置库--fileinput
    1关于fileinput利用fileinput,我们可以循环遍历标准输入或者多个文件中的数据它和open()作用很类似,但是open()只能操作一个文件且相关函数功能没有它丰富2函数介绍fileinput.input(files=None,inplace=False,backup='',*,mode='r',openhook=None,encoding=None,error......
  • Python自动化
    3-20数据类型转换数据类型转换:   1.int(x):x代指对象,返回值是一个整数类型,对象->整数       x为字符串:字符串应全为整数       x为小数:只保留整数部分       x不能是负数       x为布尔类型:True=1False=0   2.float(x):x......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运......
  • Python学习
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,且打印出......