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')