利用python自动写Word文档(三)

您所在的位置:网站首页 word图表文字修改 利用python自动写Word文档(三)

利用python自动写Word文档(三)

2024-07-10 04:18| 来源: 网络整理| 查看: 265

利用python自动写Word文档(三)——用Python-docx修改表格 系列文0.概述1.表格样式修改1.1 新建表格1.2 表格格式1.2.1修改列宽1.2.2修改行高1.2.3 表格对齐方式 1.3 合并表格 2.表格内文字修改2.1 文字样式修改2.2 文字位置修改 代码更新运行结果参考资料

系列文

利用python自动写Word文档(一)——python-docx初探 利用python自动写Word文档(二)——用python-docx修改页面方向及字体 利用python自动写Word文档(三)——用Python-docx修改表格

作者:杨璇_891b 链接:https://www.jianshu.com/p/8ce49242d96e 来源:简书

0.概述

本次主要来讨论如何用python-docx修改表格样式,修改表格的文字。

1.表格样式修改 1.1 新建表格

新建表格主要使用Document.add_table(rows,cols,style)方法 第一个参数是行数 第二个参数是列数 第三个参数是表格的样式,docx定义了很多样式可以用。

from docx.enum.style import WD_STYLE_TYPE from docx import Document document = Document() table = document.add_table(rows=1, cols=colss,style='Table Grid') #新建表格

关于表格样式名称及形式可参考[python-docx表格样式列表] 也可以用以下代码输出所有样式的名称:

from docx.enum.style import WD_STYLE_TYPE from docx import Documentd=Document() styles=d.styles for s in styles: if s.type==WD_STYLE_TYPE.TABLE: print(s.name) d.save('style.docx') 1.2 表格格式

新建完成表格后,修改表格的列宽,行高,设置表格的放置位置等。

1.2.1修改列宽

(1)可以使表格自动适应窗口大小: table.autofit=True (2)设置列宽尺寸table.cell(row,col).width=Cm(4) #也可以用Pt()

1.2.2修改行高

设置行高尺寸table.rows[0].height=Cm(12) #也可以用Pt()

1.2.3 表格对齐方式

table.alignment=WD_TABLE_ALIGNMENT.CENTER|WD_TABLE_ALIGNMENT.LEFT|WD_TABLE_ALIGNMENT.RIGHT

1.3 合并表格

在表格中每个单元格都有一个代码,cell(row,col),row表示行号,col表示列号,从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)三个单元格。

2.表格内文字修改 2.1 文字样式修改

表格中文字样式修改,与在段落中的样式修改一样,只是在添加文本时调用的方法不同。

run=table.cell(row,col).paragraphs[0].add_run(str) #添加文本的方法 run.font.name = u'宋体' run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') run.font.bold=True 2.2 文字位置修改

(1)水平对齐 table.cell(row,col).paragraphs[0].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER |WD_ALIGN_PARAGRAPH.LEFT|WD_ALIGN_PARAGRAPH.RIGHT (2)垂直对齐 table.cell(1,1).vertical_alignment=WD_ALIGN_VERTICAL.CENTER |WD_ALIGN_VERTICAL.TOP|WD_ALIGN_VERTICAL.BOTTOM

代码更新 #导入所需要的库 from docx import Document from docx.shared import Inches,Cm,Pt from docx.enum.section import WD_ORIENTATION from docx.shared import RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING from docx.oxml.ns import qn #~~~~~~~~~~~~~~~~~~~~本章新加内容1 strart~~~~~~~~~~~~~~~~~~~~~~~~~~~~ from docx.enum.style import WD_STYLE_TYPE from docx.enum.table import WD_TABLE_ALIGNMENT from docx.enum.table import WD_ALIGN_VERTICAL #~~~~~~~~~~~~~~~~~~~~本章新加内容1 end~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # 首先创建一个文档对象 document = Document() #修改页面为横板 sections=document.sections section=sections[0] new_pagewidth,new_pageheight=section.page_height,section.page_width section.page_height=new_pageheight section.page_width=new_pagewidth # 添加标题,并修改字体样式 head=document.add_heading(0) run=head.add_run('需要制作的文档') run.font.name=u'黑体' #设置字体为黑体 run._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体') run.font.size = Pt(24) #设置大小为24磅 run.font.color.rgb = RGBColor(0,0,0) #设置颜色为黑色 head.alignment = WD_ALIGN_PARAGRAPH.CENTER#居中 #添加子文档 p = document.add_paragraph() run=p.add_run('2019年03月24日至2020年03月25日') run.font.name = u'宋体' run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') run.font.size = Pt(14) #设置大小为14磅 p.alignment = WD_ALIGN_PARAGRAPH.RIGHT #右对齐 #~~~~~~~~~~~~~~~~~~~~本章更新内容2 strart~~~~~~~~~~~~~~~~~~~~~~~~~~~~ colss=11 #表格的总列数 table = document.add_table(rows=1, cols=colss,style='Table Grid') table.alignment=WD_TABLE_ALIGNMENT.CENTER #写标题行,并设置字体 hdr_cells = table.rows[0].cells Fields=['序号','字段','日期','x1','y1','x2','y2','重要性','整数','类型','备注'] for i in range(colss): hdr_cells[i].paragraphs[0].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.CENTER run=hdr_cells[i].paragraphs[0].add_run(Fields[i]) run.font.name = u'宋体' run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') run.font.bold=True if i==2: hdr_cells[i].width=Cm(2.7) f1=open('out.txt') rowss=0 #填写记录的数量 for line in f1: # 添加表格 row_cells = table.add_row().cells array=list(map(eval,line.split(","))) rowss+=1 strs=[] for i in range(colss): if i==0: strs.append(str(rowss)) elif i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3