#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
网友评论