900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 利用python docx调整word页面及表格格式(包含页眉页脚设置)

利用python docx调整word页面及表格格式(包含页眉页脚设置)

时间:2019-11-25 14:48:02

相关推荐

利用python docx调整word页面及表格格式(包含页眉页脚设置)

1. 页面布局

import docxfrom docx import Document document = docx.Document()##页面布局为横向sections=document.sectionssection=sections[0]new_pagewidth,new_pageheight=section.page_height,section.page_width#设置三个参数section.orientation = WD_ORIENT.LANDSCAPEsection.page_height=new_pageheightsection.page_width=new_pagewidth如果不设置pageheight 和pagewidth 那么转向就没有用啦

2. 页边距调整

#changing the page margins修改页边距sections = document.sections for section in sections: section.top_margin = Cm(3) section.bottom_margin = Cm(2) section.left_margin = Cm(2.54) section.right_margin = Cm(2.54) ##Cm 需要import 一下

3. 插入页眉(文字加表格)

##插入页眉##页眉离页面顶端距离##页脚离页面低端距离document.sections[0].header_distance = Cm(1.5) document.sections[0].footer_distance = Cm(1.75)header = document.sections[0].header # 获取第一个节的页眉(所有的页眉都一致)paragraph = header.paragraphs[0] # 获取页眉的文字parttext=paragraph.add_run('my header')text.font.size = Pt(10)# 页眉字体大小text.bold = True# 页眉字体是否加粗text.font.name = 'Arial' # 控制是英文时的字体text.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体') # 控制是中文时的字体paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER ##设置页眉居中##在页眉中插入表格table_h = header.add_table(rows=1, cols=3,width=Inches(2))##一行3列的表格 ##设置页眉中表格的行高table_h.rows[0].height=Cm(0.6)##在表格中填入文字run = table_h.cell(0,0).paragraphs[0].add_run(u'名称Title: ')run.font.name = 'Arial'run.font.size = Pt(10)run.italic = True ##设置是否为斜体r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '宋体')##第一个cell中的两段文字 字体设置不一样,所以需要分开来写run1 = table_h.cell(0,0).paragraphs[0].add_run(u'firsrt cell text')run1.font.name = 'Arial' ##英文字体run1.font.size = Pt(10) ##字体大小run1.bold = True ##加粗r1 = run1._element r1.rPr.rFonts.set(qn('w:eastAsia'), '宋体') ##中文字体run2 = table_h.cell(0,1).paragraphs[0].add_run(u'second cell text:')run2.font.name = 'Arial'run2.font.size = Pt(10)run2.italic = Truer2 = run2._element r2.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run2 = table_h.cell(0,2).paragraphs[0].add_run(u'third cell text')run2.font.name = 'Arial'run2.font.size = Pt(10)run2.bold = Truer2 = run2._element r2.rPr.rFonts.set(qn('w:eastAsia'), '宋体')##对页眉表格中的文字整体居中 for i in range(0,3): table_h.cell(0,i).vertical_alignment = WD_ALIGN_VERTICAL.CENTERfor par in table_h.cell(0,i).paragraphs: ##horizontal centeredpar.paragraph_format.alignment = WD_TABLE_ALIGNMENT.LEFT# # for run in par.runs:#run.font.size = Pt(10)#r = run._element#run.font.name ='Arial'#r.rPr.rFonts.set(qn('w:eastAsia'), '宋体')for par in table_h.cell(0,2).paragraphs:par.paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER##调整页眉表格的列宽 每列数字相加为10col_width_dic = {0: 7, 1: 2, 2: 1}for col_num in range(0,3): table_h.cell(0, col_num).width = Inches(col_width_dic[col_num])##加边框 table_h.style='Table Grid'

4. 插入页脚(页码)

#页脚为页码##add_page_number借鉴了别人写的插入页码functionadd_page_number(document.sections[0].footer.paragraphs[0])document.sections[0].footer.paragraphs[0].alignment =WD_ALIGN_PARAGRAPH.RIGHT

5.插入一个空白表格

table = document.add_table(rows=rows, cols=10,style='Table Grid')##为表格赋值table.cell(i,j).text=value

6. 调整表格格式

##设置行高table.rows[0].height=Cm(1.06)table.rows[1].height=Cm(1.06)table.rows[2].height=Cm(1.06)table.rows[3].height=Cm(2.21)for i in range(4,rows):table.rows[i].height=Cm(0.8)##设置列宽col_width_dic = {0:0.3,1:1.7,2:1.1,3:1.4,4:0.5,5:1.5,6:0.6,7:1.5,8:0.7,9:0.7}for col_num in range(0,10): table.cell(3, col_num).width = Inches(col_width_dic[col_num])

7. 合并单元格+表格中字体格式设置

##先合并单元格再在单元格中赋值table.cell(0,0).merge(table.cell(0,1))table.cell(0,0).text="名称"##表格内容居中&字体for i in range(len(table.rows)): for j in range(len(table.columns)): table.cell(i,j).vertical_alignment = WD_ALIGN_VERTICAL.CENTERfor par in table.cell(i,j).paragraphs: ##horizontal centeredpar.paragraph_format.alignment =WD_TABLE_ALIGNMENT.CENTER# for run in par.runs:run.font.size = Pt(10)r = run._elementrun.font.name ='Arial'run.font.name ='宋体' r.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run.font.bold=True

8.保存word

document.save('table.docx')

add page number

def create_element(name):return OxmlElement(name)def create_attribute(element, name, value):element.set(ns.qn(name), value)def add_page_number(paragraph):paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTERpage_run = paragraph.add_run()t1 = create_element('w:t')create_attribute(t1, 'xml:space', 'preserve')t1.text = ''# t1.text = 'Page 'page_run._r.append(t1)page_num_run = paragraph.add_run()fldChar1 = create_element('w:fldChar')create_attribute(fldChar1, 'w:fldCharType', 'begin')instrText = create_element('w:instrText')create_attribute(instrText, 'xml:space', 'preserve')instrText.text = "PAGE"fldChar2 = create_element('w:fldChar')create_attribute(fldChar2, 'w:fldCharType', 'end')page_num_run._r.append(fldChar1)page_num_run._r.append(instrText)page_num_run._r.append(fldChar2)of_run = paragraph.add_run()t2 = create_element('w:t')create_attribute(t2, 'xml:space', 'preserve')# t2.text = ' of 't2.text="/"of_run._r.append(t2)fldChar3 = create_element('w:fldChar')create_attribute(fldChar3, 'w:fldCharType', 'begin')instrText2 = create_element('w:instrText')create_attribute(instrText2, 'xml:space', 'preserve')instrText2.text = "NUMPAGES"fldChar4 = create_element('w:fldChar')create_attribute(fldChar4, 'w:fldCharType', 'end')num_pages_run = paragraph.add_run()num_pages_run._r.append(fldChar3)num_pages_run._r.append(instrText2)num_pages_run._r.append(fldChar4)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。