Python-docx操作word-段落操作

新增段落

在word中 段落 是最常见的,创建段落 paragraph 的操作如下:

paragraph = document.add_paragraph('这是个段落。')

插入一个段落

在此段落之前插入一个段落,如下:

prior_paragraph = paragraph.insert_paragraph_before('这是前面的段落。')

段落对齐

  • LEFT => 左对齐
  • CENTER => 文字居中
  • RIGHT => 右对齐
  • JUSTIFY => 文本两端对齐
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

document = Document()
p = document.add_paragraph('python从入门到精通')
p_format=p.paragraph_format
p_format.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER

document.save('filename4.docx')

注意右对齐

右对齐,右侧不能有空格,否则在wps中格式可能会错乱(亲测)

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

p = doc.add_paragraph('右对齐   ')
p_format=p.paragraph_format
p_format.alignment=WD_PARAGRAPH_ALIGNMENT.RIGHT

段落缩进

首行空2格

该段落首行空2格,其他行左对齐

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

doc = Document()
p = doc.add_paragraph('python从入门到精通')

p = doc.add_paragraph("段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容")
p_format = p.paragraph_format
#设置首行缩进,如下:
p_format.first_line_indent = Inches(0.25)

doc.save('filename5.docx')

段落缩进

该段落整体缩进

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

doc = Document()
p = doc.add_paragraph('python从入门到精通')

p = doc.add_paragraph("段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容")
p_format = p.paragraph_format
p_format.left_indent = Inches(0.5)

doc.save('filename5.docx')

段落行距

  • 当行距为 固定值 时,设置值单位为 磅 ,需要用 Pt
  • 当行距为 多倍行距 时,设置值为数值
from docx.shared import Pt
from docx.enum.text import WD_LINE_SPACING
SINGLE         =>  单倍行距(默认)
EXACTLY        =>  固定值
MULTIPLE       =>  多倍行距

例子1

固定值

from docx import Document
from docx.enum.text import WD_LINE_SPACING
from docx.shared import Pt

doc = Document()
p = doc.add_paragraph("段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容")

p_format = p.paragraph_format

p.line_spacing_rule = WD_LINE_SPACING.EXACTLY #固定值
p_format.line_spacing = Pt(18) # 固定值18磅
# p.line_spacing_rule = WD_LINE_SPACING.MULTIPLE #多倍行距
# p_format.line_spacing = 1.75 # 1.75倍行间距

p = doc.add_paragraph("段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容")

doc.save('filename11.docx')

例子2

多倍行距

from docx import Document
from docx.enum.text import WD_LINE_SPACING
from docx.shared import Pt

doc = Document()
p = doc.add_paragraph("段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容")

p_format = p.paragraph_format

p.line_spacing_rule = WD_LINE_SPACING.MULTIPLE #多倍行距
p_format.line_spacing = 1.75 # 1.75倍行间距

p = doc.add_paragraph("段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容")

doc.save('filename11.docx')

字体操作

文档全局字体属性

from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt

doc = Document()

# 文字大小
doc.styles['Normal'].font.size = Pt(12)

# 粗体字
# doc.styles['Normal'].font.bold = True

# 设置字体
doc.styles['Normal'].font.name = u'宋体'
# 对于中文字体必须加如下内容
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

#doc.styles['Normal'].font.color.rgb = RGBColor(0, 0, 255) //颜色

# doc = Document() # 注意不要再新建文档,否则上面设置无效
p = doc.add_paragraph("段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容段落内容")

doc.save('filename17.docx')

粗体、斜体、下划线

paragraph.add_run('文字').bold = True
paragraph.add_run('文字').italic = True

例子:

from docx import Document

doc = Document()
paragraph = doc.add_paragraph()
r=paragraph.add_run('粗体')
r.bold = True # 粗体字

paragraph = doc.add_paragraph()
paragraph.add_run('斜体').italic = True # 斜体字

paragraph = doc.add_paragraph()
paragraph.add_run('下划线').underline = True # 下划线

doc.save('filename12.docx')

文字大小

单位:磅

from docx import Document
from docx.shared import Pt

doc = Document()
paragraph = doc.add_paragraph()

paragraph.add_run('20磅字体').font.size = Pt(20) # 设置字体,单位磅

doc.save('filename14.docx')

文字颜色

通过 RGB 改变字体颜色

from docx import Document
from docx.shared import RGBColor

doc = Document()
paragraph = doc.add_paragraph()
paragraph.add_run("改变文字颜色").font.color.rgb=RGBColor(54,100,45)

doc.save('filename15.docx')

字体

from docx import Document
from docx.oxml.ns import qn

doc = Document()
paragraph = doc.add_paragraph()
g=paragraph.add_run("楷体字")

g.font.name=u'楷体'
g._element.rPr.rFonts.set(qn('w:eastAsia'), u'楷体')

doc.save('filename16.docx')

原文出处:/show_1IX1RnUjgdjV.html