python操作word文档-3

2020-12-28  本文已影响0人  Chaweys

#coding=utf-8
import docx
from docx.shared import Cm,Inches,Pt           #用来设置单元格内元素的宽高
from docx.enum.section import WD_ORIENTATION   #用来设置章节的横向或纵向
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT,WD_LINE_SPACING  #用来设置段落对齐方式
from docx.shared import RGBColor               #用来设置字体颜色
from docx.oxml.ns import qn                    #用来设置字体
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT


from docx.enum.style import WD_STYLE_TYPE


doc=docx.Document()


sections=doc.sections
section=sections[0]                            #获取单个章节
new_pagewidth,new_pageheight=section.page_height,section.page_width
#设置三个参数
section.orientation = WD_ORIENTATION.LANDSCAPE #设置页面方向为横向
section.page_height=Cm(21)                     #设置页面高度21
section.page_width=Cm(29)                      #设置页面宽度29


#添加一个标题
head=doc.add_heading(0)
head.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER          #设置标题居中
run=head.add_run("需要制作的文档")
run.font.name=u'宋体'                                 #设置字体
run._element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体') #针对包含中文的字体设置
run.font.size=Pt(24)                                  #设置字体大小
run.font.color.rgb=RGBColor(0,0,0)                    #设置字体颜色


#添加一个段落
p=doc.add_paragraph()
p.alignment=WD_PARAGRAPH_ALIGNMENT.RIGHT              #设置添加的段落右对齐
run=p.add_run("2020年12月27日")
run.font.name=u'宋体'                                 #设置字体
run._element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体') #针对包含中文的字体设置
run.font.size=Pt(22)                                  #设置字体大小
run.font.color.rgb=RGBColor(0,0,0)                    #设置字体颜色



#添加表格,对表格内的字体格式设置
colss=6 #定义表格的总列数
table=doc.add_table(rows=1,cols=colss,style='Table Grid')   #添加一行六列的表格
table.alignment=WD_TABLE_ALIGNMENT.CENTER                   #设置表格居中

records=["第一列","第二列","第三列","第四列","第五列","第六列"]
hdr_rows=table.rows[0].cells

for i in range(colss):
    hdr_rows[i].paragraphs[0].paragraph_format.alignment=WD_TABLE_ALIGNMENT.CENTER  #设置单元格水平居中
    run=hdr_rows[i].paragraphs[0].add_run(records[i])       #给每个单元格添加文本
    run.font.name = u'宋体'                                 #设置字体
    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')  #针对包含中文的字体设置
    run.font.size = Pt(22)                                  #设置字体大小
    run.font.color.rgb = RGBColor(0, 0, 0)                  #设置字体颜色


'''
out.txt
123,456,789,234,567,151
546,645,894,496,165,897
897,987,354,899,123,945
648,644,952,324,672,567
'''

with open("out.txt") as f:
    for line in f:
        result=line.split(',')
        cel_row=table.add_row().cells
        colss=6
        for i in range(colss):
            cel_row[i].paragraphs[0].paragraph_format.alignment=WD_TABLE_ALIGNMENT.CENTER  #设置单元格水平居中
            run=cel_row[i].paragraphs[0].add_run(result[i])          #给每个单元格添加文本
            run.font.name = u'宋体'                                  #设置字体
            run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')   #针对包含中文的字体设置
            run.font.size = Pt(22)                                   #设置字体大小
            run.font.color.rgb = RGBColor(0, 0, 0)                   #设置字体颜色






#合并单元格
'''
table.cell(row1,col1).merge(table.cell(row2,col2))
如果是cell(row1,col1)是cell(1,0),cell(row2,col2)是cell(1,2),那么合并的就是cell(1,0)、cell(1,1)、cell(1,2)三个单元格。
'''
#先添加两行,每个单元格留空
for i in range(2):
    cel_row=table.add_row().cells
    cel_row[i].text=""


table.cell(5,0).merge(table.cell(6,0))     #合并单元格:(5,0),(6,0)
table.cell(5,0).text=""                    #合并后的单元格留空
table.cell(5,0).paragraphs[0].paragraph_format.alignment=WD_TABLE_ALIGNMENT.CENTER          #设置合并后的单元格水平居中
table.cell(5,0).paragraphs[0].paragraph_format.alignment=WD_CELL_VERTICAL_ALIGNMENT.CENTER  #设置合并后的单元格垂直居中
run=table.cell(5,0).paragraphs[0].add_run("竖向合并")    #对合并的单元格写入字符
run.font.name = u'宋体'                                  #设置字体
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')   #针对包含中文的字体设置
run.font.size = Pt(10)                                   #设置字体大小
run.font.color.rgb = RGBColor(0, 0, 0)                   #设置字体颜色




table.cell(5,1).merge(table.cell(5,3))      #合并单元格:(5,1),(5,2),(5,3)
table.cell(5,1).text=""                     #合并后的单元格留空
table.cell(5,1).paragraphs[0].paragraph_format.alignment=WD_TABLE_ALIGNMENT.CENTER          #设置合并后的单元格水平居中
table.cell(5,1).paragraphs[0].paragraph_format.alignment=WD_CELL_VERTICAL_ALIGNMENT.CENTER  #设置合并后的单元格垂直居中
run=table.cell(5,1).paragraphs[0].add_run("水平合并")    #对合并的单元格写入字符
run.font.name = u'宋体'                                  #设置字体
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')   #针对包含中文的字体设置
run.font.size = Pt(15)                                   #设置字体大小
run.font.color.rgb = RGBColor(0, 0, 0)                   #设置字体颜色



doc.save("demo222.docx")
demo-docx222.png
上一篇 下一篇

猜你喜欢

热点阅读