相关包
python-docx
import docx
Word文档结构
python读取Word文档内容
doc.paragraphs 得到一个列表,包含了每个段落实例
from docx import Document doc = Document("lian.docx") print(doc.paragraphs)
paragraph.text 得到该段落的文字内容
from docx import Document doc = Document("lian.docx") for paragraph in doc.paragraphs: print(paragraph.text)
run.text 得到该文字块的文字内容
from docx import Document doc = Document("lian.docx") paragraph = doc.paragraphs[0] runs = paragraph.runs for run in runs: print(run.text)
python向Word文档写入内容
添加文字内容
添加标题
doc.add_heading(‘ 标题名称’,level=标题等级)
from docx import Document doc = Document("lian.docx") doc.add_heading("一级标题",level=1)
添加段落
doc.add_paragraph("段落文字内容")
paragraph1 = doc.add_paragraph("这是一个段落") doc.add_paragraph("这又是一个段落")
添加文字块
paragraph.add_run("文字内容")
paragraph3 = doc.add_paragraph() paragraph3.add_run("加粗").bold = True paragraph3.add_run("普通") paragraph3.add_run("斜体").italic = True
添加分页
doc.add_page_break()
doc.add_page_break()
添加图片及表格
添加图片
doc.add_picture("图片地址")
doc.add_picture("my.png")
添加图片,给定宽度或高度
dic.add_picture("图片地址", width=宽度, height=高度)
from docx.shared import Cm doc.add_picture("my.png", width = Cm(5)) #设定宽度为5cm doc.add_picture("my.png", heigtht = Cm(5)) #设定高度为5cm
Cm就是厘米
如果只给一个宽度或高度,另一个的尺寸会自动计算
添加表格
doc.add_table(rows=多少行, cols=多少列)
records = [ ["学号","姓名","成绩"], [101,"李雷",95], [102,"韩梅梅",100], [103,"马冬梅",98] ] table = doc.add_table(rows = 4, cols = 3) for row in range(4): cells = table.rows[row].cells for col in range(3): cells[col].text = str(records[row][col])
总起来
from docx import Document from docx.shared import Cm doc = Document() doc.add_heading("一级标题",level=1) paragraph1 = doc.add_paragraph("这是一个段落") paragraph2 = doc.add_paragraph("这又是一个段落") paragraph3 = doc.add_paragraph() paragraph3.add_run("加粗").bold = True paragraph3.add_run("普通") paragraph3.add_run("斜体").italic = True doc.add_page_break() doc.add_picture("my.png") doc.add_picture("my.png", width = Cm(5)) doc.add_picture("my.png", height = Cm(5)) records = [ ["学号","姓名","成绩"], [101,"李雷",95], [102,"韩梅梅",100], [103,"马冬梅",98] ] table = doc.add_table(rows = 4, cols = 3) for row in range(4): cells = table.rows[row].cells for col in range(3): cells[col].text = str(records[row][col]) doc.save("shi.docx") #最后一定不要忘了保存
python调整Word文档样式
对文字字体样式进行修改
run.font.样式=xxx
注意这里设定字体的时候,如果是英文名称的字体就直接 run.font.name = "" 就可以了
如果是中文名称字体的话,要这样才行
r = run._element.rPr.rFonts
r.set(qn("w:eastAsia"), "微软雅黑")from docx import Document from docx.shared import Pt,RGBColor from docx.oxml.ns import qn doc = Document("lian.docx") for paragraph in doc.paragraphs: for run in paragraph.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) #20号字体的大小 run.font.color.rgb = RGBColor(255,255,0) #run.font.name = "微软雅黑" r = run._element.rPr.rFonts r.set(qn("w:eastAsia"), "微软雅黑") doc.save("shi.docx")
修改段落样式
对齐样式
paragraph.alignment = 对齐方式
行间距
paragraph.paragraph_format.line_spacing = 2.0
注意用浮点数,2.0就表示两倍行间距
段前和段后间距
paragraph.paragraph_format.space_before = Pt(12) paragraph.paragraph_format.space_after = Pt(12)
Pt(12)表示12磅
总起来
from docx.enum.text import WD_ALIGN_PARAGRAPH from docx import Document from docx.shared import Pt,RGBColor from docx.oxml.ns import qn doc = Document() paragraph = doc.add_paragraph() paragraph. alignment = WD_ALIGN_PARAGRAPH.CENTER paragraph.paragraph_format.line_spacing = 2.0 paragraph.paragraph_format.space_before = Pt(12) paragraph.paragraph_format.space_after = Pt(12) doc.save("shi.docx")