pip install python-docx

相同样式的文字是一个run


提取文字:

from docx import  Document
doc=Document('这是一个文档.docx')
print(doc.paragraphs)
for para in doc.paragraphs:
    print(para.text)
    for run in para.runs:
        print(run.text)
    print('*'*20)


利用Python向Word文档写入

from docx import  Document
from docx.shared import Cm
#用于导入以后调整图片大小的类

doc=Document('这是一个文档.docx')
#读取文档内容
'''
print(doc.paragraphs)
for para in doc.paragraphs:
    print(para.text)
    for run in para.runs:
        print(run.text)
    print('*'*20)
'''
#写入文档内容
doc.add_heading('一级标题')
#以上语句踩坑,如果出现KeyError: "no style with name 'Heading 1'"的解决
#简单办法是:打开这个.docx文件,新建一个类似的样式,如一级标题,保存文件,然后删除这个样式,
# 再保存文件。这样做的目的是让.docx文件记住默认的样式。

para1=doc.add_paragraph('这又是一个段落')
para2=doc.add_paragraph('zhe youshi yige duanluo ')

para3=doc.add_paragraph()
para3.add_run('加粗').bold=True
para3.add_run('普通')
para3.add_run('斜体').italic=True

#添加分页
doc.add_page_break()


#添加图片
doc.add_picture('每颗豆.png',width=Cm(5),height=Cm(5))

#添加表格
table=doc.add_table(rows=4,cols=3)
records=[
    ['学号','姓名','成绩'],
    ['101','zhangsan',95],
    ['102','李四',100],
    ['103','ww',93]
]

for row in range(4):
    cells=table.rows[row].cells
    for col in range(3):
        cells[col].text=str(records[row][col])

doc.save('这是一个文档.docx')


样式修改:

from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT


doc=Document('word样式.docx')
doc.add_paragraph('这是一个新段')
doc.paragraphs[-1].add_run('又是一块文字')
doc.save('word样式.docx')

#doc=Document('word样式.docx')

for para in doc.paragraphs:
    #段落样式修改
    para.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT
    #修改行间距
    para.paragraph_format.line_spacing=3.0
    para.paragraph_format.space_before=Pt(12)
    para.paragraph_format.space_after=Pt(12)
    # 文字样式
    for run in para.runs:
        run.font.bold=True
        run.font.italic=True
        run.font.underline=True
        run.font.strike=True
        run.font.shadow=True
        run.font.size=Pt(20)
        run.font.color.rgb=RGBColor(255,0,0)
        #加中文字体,一定要按一下步骤进行,有待于python升级
        run.font.name='仿宋'
        r=run._element.rPr.rFonts
        r.set(qn('w:eastAsia'),'仿宋')

doc.save('word样式.docx')

 

Logo

一站式 AI 云服务平台

更多推荐