详解python-docx处理Word必备工具

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

详解python-docx处理Word必备⼯具
我的理解
为什么会⽤到python-docx,因为近段时间下载了⼤量⽹⽂,但格式都是html的,我个⼈习惯使⽤word处理⽂字,于是就想法设法把html⽂
档转换为word,⾸先要考虑的问题就是从html中提取的⽂字怎么存word⾥呢,之前⽤了pandoc直接转换,带转换后的效果太不理想,没
什么格式,不符合我这种对word格式有严格要求强迫症⼈的需要,于是就到处搜寻其他⽅法,终于功夫不负有⼼⼈,通过⼏天研究python-docx,感觉很适合我,就⼀边分析html⽂档,⼀边思考怎么⽤python-docx存想要的格式word,因为我的word排版,⼀般习惯页
⾯要设置成5678页边距的,⼤⼩A4的,正⽂主标题⽅正⼩标宋,其他标题要么⿊体,要么加粗,正⽂要⾸⾏缩进2字符仿宋_GB2312,页脚要加页码显⽰,⼤概这些样式。

python-docx 创建⼀篇⽂档也差不多是这么个思路,⼀篇⽂档也就是Document()对象⾸先要分成不同的节,也就是由sections对象控制,然后每节中⼜分成不同的段落paragraphs对象,每段⼜由不同的块run对象组成,针对不同的节(section)可以设置页⾯的⼀些属性,针
对不同的段落(paragraph),可以设置间距和缩进、换⾏和分页等,针对不同块(run)可以设置字体的字型、颜⾊、⼤⼩等。

可以先设置好整篇⽂章的⼤致段落、字体等格式,然后针对不同段落和块可以单独再进⾏设置。

我主要讲讲⾃⼰⽤到的⼏个内容是怎么设置的。

安装库:
pip install python-docx
⽤到的库
from docx import Document(⽂档读写)
from docx.shared import Pt,Cm,Inches (字体⼤⼩,不⼀定全⽤到)
from docx.oxml.ns import qn(设置字体格式,分栏等⽤到)
from docx.shared import RGBColor (设置字体颜⾊)
from docx.enum.text import WD_ALIGN_PARAGRAPH (设置对其⽅式)
from docx.enum.section import WD_ORIENTATION (纸张⽅向⽤到)
设置⼤致格式
这样设置完了之后有⼀个好处就是,后往⾥⾯写⼊⽂档的时候回⾃动按这个格式,如果有需要改动的再单独写⼊时改。

docment = docx.Document(docx_tamplate) # 读取模板⽂档,这⾥可以不⽤模板⽂档,因为python-docx没法设置页码,所以我先建了⼀个有页码的空⽩⽂档作为模板⽂档# 设置正⽂默认格式
# 字体⼤⼩三号字(16)
docment.styles['Normal'].font.size = Pt(16)
# 字体仿宋_GB2312
docment.styles['Normal'] = u'仿宋_GB2312'
docment.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
# ⾏间距 28磅段前、段后不留空
docment.styles['Normal'].paragraph_format.line_spacing = Pt(29)
docment.styles['Normal'].paragraph_format.space_before = Pt(0)
docment.styles['Normal'].paragraph_format.space_after = Pt(0)
# ⾸⾏缩进2字符
docment.styles['Normal'].paragraph_format.first_line_indent = 406400
# 关闭孤⾏控制
docment.styles['Normal'].paragraph_format.widow_control = False
# 设置页⾯⼤⼩
docment.sections[0].page_height = Cm(29.7) # 设置A4纸的⾼度
docment.sections[0].page_width = Cm(21) # 设置A4纸的宽
# 设置页边距
docment.sections[0].top_margin = Cm(3.7)
docment.sections[0].bottom_margin = Cm(3.4)
docment.sections[0].left_margin = Cm(2.8)
docment.sections[0].right_margin = Cm(2.6)
单独设置段格式
doc=Document() #创建⼀个空⽩⽂档
p1=doc.add_paragraph() #初始化建⽴⼀个⾃然段
p1.alignment=WD_ALIGN_PARAGRAPH.CENTER #对齐⽅式为居中,没有这句话默认左对齐。

另外右对齐:RIGHT,两端对齐:JUSTIFY,分散对齐:DISTRIBUTE p1.paragraph_format.line_spacing=1.5 #设置该段落,⾏间距为1.5倍,也可以像上⾯设默认值那样⽤Pt单位来设置
p1.paragraph_format.first_line_indent=Inches(0.5) #段落缩进0.5英⼨,我还是习惯设置2字符值为:406400
p1.paragraph_format.left_line_indent=Inches(0.5) #设置左缩进0.5英⼨。

⼀般⽤不到
p1.paragraph_format.right_line_indent=Inches(0.5) #设置右缩进0.5英⼨,⼀般⽤不到
p1.paragraph_format.keep_together = False # 段前分页
p1.paragraph_format.keep_with_next = False # 与下段同页
p1.paragraph_format.page_break_before = True # 段中不分页
p1.paragraph_format.widow_control = False # 孤⾏控制
p1.space_after=Pt(5) #设置段后距离为5磅
p1.space_before=Pt(5) #设置段前距离为5磅
run1=p1.add_run('你好') #写⼊段落的中的⽂本“你好”
run1.font.size=Pt(12) #单独设置字体⼤⼩为24
run1.font.bold=True #样式设置加粗
run1.italic=True #字形设置斜体
run1.font.underline = True # 下划线
run1.font.color.rgb = RGBColor(255, 0, 0) # 颜⾊
插⼊图⽚
#添加图⽚,设置图⽚⼤⼩
doc.add_picture(r"图⽚路径", width=Cm(10))
插⼊表格
tab = doc.add_table(rows=5, cols=8, style='Table Grid') # 创建⼀个5⾏8列的表格,样式为Table Grid
tab.cell(0, 0).text = '表⾓' # 0⾏0列的内容为表⾓
cell=tab.cell(0, 1).merge(tab.cell(0, 3)) # 合并0⾏1列到0⾏3列
p = cell.paragraphs[0]
run = p.add_run(‘合并') #在单元格内容创建⼀个段落,并写⼊‘合并'⽂本
run.font.size = Pt(10.5) # 字体⼤⼩设置,和word⾥⾯的字号相对应5号字
run.bold = True
p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置为加粗居中显⽰
到此这篇关于python-docx处理Word必备⼯具的⽂章就介绍到这了,更多相关python-docx处理Word内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

相关文档
最新文档