word python api_python操作word文档-0

本文介绍了如何使用python-docx库创建和编辑Word文档,包括添加段落、插入表格、设置单元格对齐方式、插入图片以及调整页面布局。通过实例展示了如何写入文本、填充表格内容、插入图片到指定单元格,并展示了如何将图片列表以列表形式排列在Word文档中。
摘要由CSDN通过智能技术生成

#coding=utf-8

#安装包 python-docx

#举例1、写入简单段落

import docx

#创建word文档对象

file=docx.Document()

#添加段落

file.add_paragraph("床前明月光")

file.add_paragraph("疑是地上霜")

file.add_paragraph("举头望明月")

file.add_paragraph("低头思故乡")

#保存至word文档

file.save("test1.docx")

test1-docx.png

#举例2、插入表格并填充内容、设置对齐方式

import docx

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT #用来设置单元格水平对齐方式

from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT #用来设置单元格垂直对齐方式

from docx import shared

from docx.shared import Cm,Inches,Pt #用来设置单元格内元素的宽高

#创建word文档对象

doc=docx.Document()

table=doc.add_table(5,5) #定义表格对象 5行5列

table.cell(0,0).text='123' #在第一行第一列单元格插入字符123,注:表格都是从0开始计数

table.cell(0,1).text='456' #在第一行第二列单元格插入字符456,注:表格都是从0开始计数

#设置第一行第一列单元格水平居中|左对齐|右对齐

table.cell(0,0).paragraphs[0].paragraph_format.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER|WD_PARAGRAPH_ALIGNMENT.LEFT|WD_PARAGRAPH_ALIGNMENT.RIGHT

#设置第一行第二列单元格垂直居中|顶部对齐|底部对齐

table.cell(0,1).vertical_alignment=WD_CELL_VERTICAL_ALIGNMENT.CENTER|WD_CELL_VERTICAL_ALIGNMENT.TOP|WD_CELL_VERTICAL_ALIGNMENT.BOTTOM

#在以下单元格第一行第三列的单元格中插入图片,并设置宽度为5cm。注:当只设置图片一个方向的尺寸(宽或高),另一个方向的只存会自动进行缩放

table.cell(0,2).paragraphs[-1].add_run().add_picture("1.jpg",width=shared.Cm(5))

#在以下单元格第一行第四列的单元格中插入图片,并设置高度为5英寸。注:当只设置图片一个方向的尺寸(宽或高),另一个方向的只存会自动进行缩放

table.cell(0,3).paragraphs[-1].add_run().add_picture("2.jpg",height=shared.Inches(5))

doc.save("test2.docx")

test2-docx.png

#举例3、设置页面布局

'''

页面方向有横向与竖向,新建Document时,默认的是竖向页面,要设置为我们目标的横向,需要设置设置三个参数:

section.orientation、section.page_width、section.page_height

注:如果只设置了参数section_orientation=WD_ORIENT.LANDSCAPE,不设置另外两个参数,页面方向并不发生变化。

如果设置了section.page_width、section.page_height两个参数,不设置section.orientation页面会根据前两个参数设置页面尺寸进行调整。

'''

import docx

from docx.shared import Cm,Inches,Pt #用来设置单元格内元素的宽高

from docx.enum.section import WD_ORIENTATION #用来设置章节的横向或纵向

doc=docx.Document() #创建word文档对象

sec=doc.sections #获取word文档对象章节列表,新建的文档默认只有一节

sec0=sec[0] #取第一节并命名为sec0

'''

新建的文档默认为竖向,改为横向须设置三个参数

设置页面方向为横向必须同时设置高度和宽度才有用

若只设置sec0.orientation而不设置宽和高,则方向发生变化.(LANDSCAPE-横向)

若只设置了宽和高,不设置sec0.orientation,则页面的宽和高会改变,但仍为纵向.

'''

sec0.orientation=WD_ORIENTATION.LANDSCAPE

sec0.page_width=Cm(21)

sec0.page_height=Cm(30)

sec0.left_margin=Cm(1)

sec0.right_margin=Cm(1)

sec0.top_margin=Cm(1)

sec0.bottom_margin=Cm(1)

table=doc.add_table(5,5) #定义表格对象 5行5列

table.cell(0,0).text='123' #在第一行第一列单元格插入字符123

table.cell(1,0).text='456'

table.cell(0,1).text='789'

doc.save("test3.docx")

test3-docx.png

#举例4、将一个文件夹中的图片以列表形式排列在word中

import os

imagepath="./picture/"

imagelist=os.listdir(imagepath)

print(imagelist)

import docx

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT #用来设置单元格水平对齐方式

from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT #用来设置单元格垂直对齐方式

from docx import shared

from docx.shared import Cm,Inches,Pt #用来设置单元格内元素的宽高

from docx.enum.section import WD_ORIENTATION #用来设置章节的横向或纵向

doc=docx.Document()

sec=doc.sections

sec0=sec[0]

sec0.orientation=WD_ORIENTATION.LANDSCAPE

sec0.page_width=Cm(21)

sec0.page_height=Cm(29.7)

sec0.left_margin=Cm(1)

sec0.right_margin=Cm(1)

sec0.top_margin=Cm(1)

sec0.bottom_margin=Cm(1)

rowNums=eval(input("请输入图片列表转成的行数:"))

colNums=eval(input("请输入图片列表转成的列数:"))

table=doc.add_table(rowNums*3,colNums+1)

for row in range(rowNums+1):

for col in range(colNums+1):

try:

imageName=imagelist[row*3+col]

print("#####")

print(imageName)

print(imagepath+imageName)

print((row*2,col))

table.cell(row*2, col).paragraphs[0].paragraph_format.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER

table.cell(row*2, col).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER

table.cell(row*2+1, col).paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

table.cell(row*2+1, col).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER

table.cell(row*2,col).text=imageName

table.cell(row*2+1,col).paragraphs[-1].add_run().add_picture(imagepath+imageName,width=shared.Cm(2))

except:

pass #如果有其它类型的文件则忽略

doc.save("test4.docx")

结果:

['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg']

请输入图片列表转成的行数:2

请输入图片列表转成的列数:2

#####

1.jpg

./picture/1.jpg

(0, 0)

#####

2.jpg

./picture/2.jpg

(0, 1)

#####

3.jpg

./picture/3.jpg

(0, 2)

#####

4.jpg

./picture/4.jpg

(2, 0)

#####

5.jpg

./picture/5.jpg

(2, 1)

#####

6.jpg

./picture/6.jpg

(2, 2)

#####

7.jpg

./picture/7.jpg

(4, 0)

#####

8.jpg

./picture/8.jpg

(4, 1)

#####

9.jpg

./picture/9.jpg

(4, 2)

test4-docx.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值