目录

1.安装DOCX

2.docx操作


 

1.安装DOCX

pip install docx

或下载whl文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/

 

2.docx操作

(1)创建文档     

from docx import Document

document = Document()

若括号里面写入word文件路径,则表明打开该文件

 

(2)添加标题

document.add_heading('This is my title', 0)

 

(3)添加段落文字

document.add_paragraph('my paragraph')

文字为默认格式(英文),若要设置中文字体,且对文字设置对齐,颜色,大小等设置,则:

from docx.shared import RGBColor

from docx.shared import Pt

from docx.enum.text import WD_ALIGN_PARAGRAPH

document.styles['Normal'].font.name = u'黑体' #可换成word里面任意字体

p = document.add_paragraph()

p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #段落文字居中设置

run = p.add_run(u'我添加的段落文字')

run.font.color.rgb = RGBColor(54,95,145) #颜色设置,这里是用RGB颜色

run.font.size = Pt(36) #字体大小设置,和word里面的字号相对应

 

(4)添加图片

pic = document.add_picture(r'e:\pic.png',width = Inches(1.5))

#图片默认是左对齐,以下实现图片居中设置

last_paragraph = document.paragraphs[-1]

last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER

 

(5)添加表格

table = document.add_table(rows=2, cols=3,style="Table Grid") #添加2行3列的表格

表格的style有很多种,默认情况下表格是没有边框的,Table Grid格式是普通的黑色边框表格,更多表格样式可以百度。但是,我们很多时候希望对表格进行更为漂亮的修改,比如自定义表格某一列的宽度,表格的高度。

from docx.shared import Inches

# table.autofit = False

col = table.columns[1]

col.width = Inches(5) #设置表格第2列宽度为Inches(5) 默认情况下表格是自动适应文档宽度

 

对于表格的高度官网上面有说明文档,但是其库函数的代码没有更新,所以找了很久才找到下面一种方法,以后官网要是更新了代码可以按照官网上面的方法进行设置更为简单一些。

from docx.oxml.ns import qn

from docx.oxml import OxmlElement

for i in range(rows): #遍历表格的所有行

tr = table.rows[i]._tr

trPr = tr.get_or_add_trPr()

trHeight = OxmlElement('w:trHeight')

trHeight.set(qn('w:val'), "450")

trPr.append(trHeight) #表格的每一行进行高度设置,450这个值可以任意修改

 

(6)表格里面添加文字

heading_cells = table.rows[0].cells #将表格的第一行设置为表头

for i in range(cols): #cols为表格的列数

p = heading_cells[i].paragraphs[0] #利用段落功能添加文字

run = p.add_run(Arr[i]) #把表头放在一个数组里面的,这样方便赋值

p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #居中设置,默认是左对齐

 

还有一种直接对表格赋值的方式:

table.cell(i,j).text = u'表格文字' #在表格的i行j列设置文字,默认文字在表格中是左对齐

 

(7)添加表格行

row = table.add_row()

若需要对添加的行进行赋值,其方法和上面是一样的。

 

(8)文档的保存

document.save('test.docx') #可以设置其他路径