python-word添加标题,段落,文字块

安装与使用python-docx

要使用必须先安装,要安装python-docx还是在Pycharm的终端(Terminal)中输入pip install

python-docx,如下所示(Successfully installed)便是表示安装成功了。

新建与保存word

python-docx模块已经安装好了,我们直接利用它新建一个全新的word文档,直接上代码:

from docx import Document

document = Document() #创建一个空文档

document.save(r'D:\自动化\word\道德经.docx') # 保存文件

运行后,在 D:\自动化\word 日录下就多出了一个道德经,docx 文档了。因为只是创建了一个空文档所以打开里面什么也没有,是空白的。

代码很简单,首先导入docx库,这里需要注意一点,虽然我们安装的是python-docx模块,但是使用时是导入的docx,从代码中第一行可以看出。

第二行就是新建-个Document。

第三行则是将新建的Document保存到D:\自动化\word\道德经,docx。

写入Word

我们通过代码打开刚才创建的道德经.docx 来插入一些数据看看,上代码:

python 复制代码
from docx import Document
from docx.shared import Inches, Cm


document = Document() #创建一个空文档
document.save(r'D:\自动化\word\道德经.docx') # 保存文件

# 打开一个document
file_path = r'D:\自动化\word\道德经.docx'
document = Document(file_path)


#设置标题段落
document.add_heading('道德经',0)

#添加段落
p =document.add_paragraph('道可道,非常道:名可名非常名。')
p.add_run('无名,天地之始,').bold=True#在指定段落后添加粗体文字
p.add_run('有名')#在制定段落后添加默认格式文字
p.add_run('万物之母。').italic=True#在指定段落后添加斜体文字

#添加1级标题=标题1
document.add_heading('故常无欲',level=1)
# 添加指定格式段落 style后面则是样式
document.add_paragraph('以观其妙,', style='Intense Quote')
# 添加段落,样式为List Bullet类型
document.add_paragraph('常有欲,以观其徼。', style='List Bullet')
# 添加段落,样式为List Number类型
document.add_paragraph('此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。', style='List Number')
document.add_paragraph('所以说,buff老师教Python,教得妙。', style='List Number')

# 添加图片
img_path = r'D:\自动化\word\girl.png'
document.add_picture(img_path)
document.add_picture(img_path, width=Inches(1.25))
document.add_picture(img_path, width=Cm(5), height=Cm(5))

# 待添加到表格的内容
records = [
    (1, '李白', '诗仙'),
    (2, '杜甫', '诗圣'),
    (3, '白居易', '香山居士, 与元稹并称元白, 与刘禹锡合称刘白')
]
# 添加一个1行3列的表格, 表格样式为Table Grid
# 表格样式参数可选,缺省时为Normal Table
# Normal Table
# Table Grid
# Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6
# Light List、Light List Accent 1 至 Light List Accent 6
# Light Grid、Light Grid Accent 1 至 Light Grid Accent 6
# 太多了其它省略...
table = document.add_table(rows=1, cols=3, style='Table Grid')

# 填充标题行
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '序号'
hdr_cells[1].text = '姓名'
hdr_cells[2].text = '描述'

# 动态添加数据行
for id, name, desc in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(id)
    row_cells[1].text = name
    row_cells[2].text = desc
document.add_paragraph('再添加一个表格')

# 待添加到表格的内容
records2 = [
    ["姓名", "性别", "家庭地址"],
    ["貂蝉", "女", "河北省"],
    ["杨贵妃", "女", "贵州省"],
    ["西施", "女", "山东省"]
]

# 添加一个4行3列的表格
table2 = document.add_table(rows=4, cols=3, style='Light List Accent 5')

# 填充表格
for 行索引 in range(4):
    cells = table2.rows[行索引].cells
    for 列索引 in range(3):
        cells[列索引].text = str(records2[行索引][列索引])

# 添加分页符
document.add_page_break()

# 保存文档
document.save(r'D:\自动化\word\道德经.docx')

添加标题

level等级1-9 也就是标题1-标题9,我们可以在旧文档中将标题格式设置好,使用Python-docx打开旧文档,再添加相应等级标题即可。

document.add_heading('一级标题', level=1)

添加段落

段落在 Word 中是基本内容。它们用于正文文本,也用于标题和项目列表(如项目符号)。

添加段落的时候,赋值给一个变量,方便我们后面进行格式调整。

p = document.add_paragraph('道可道,非常道;名可名,非常名。')

添加指定格式段落 style后面则是样式

document.add_paragraph('以观其妙,', style='Intense Quote')

添加文字块

在指定段落上添加文字块。

p.add_run('无名,天地之始,').bold = True # 在指定段落后添加粗体文字

p.add_run('有名,') # 在指定段落后添加默认格式文字

p.add_run('万物之母。').italic = True # 在指定段落后添加斜体文字

添加图片

width, height可用于设置图片尺寸,缺省时为图片默认大小。

document.add_picture('girl.png')

document.add_picture('girl.png', width=Inches(1.25))

document.add_picture('girl.png', width=Cm(5), height=Cm(5))

添加一个4行3列的表格

table = document.add_table(rows=4, cols=3)

table = document.add_table(rows=4, cols=3, style='Light Shading Accent 2')

添加分页符

添加分页符

document.add page break()

读取Word

学习如何写入Word,我们继续学习下如何读取Word中的文字数据与表格数据。上代码:

python 复制代码
from docx import Document
doc = Document(r'D:\自动化\word\道德经.docx')

#读取word中所有内容

for p in doc.paragraphs:
    print(p, p.text)

# 读取指定段落中的所有run
for run in doc.paragraphs[1].runs:
    print(run, run.text)


# 读取 word中所有表格内容
for 表格 in doc.tables:
    print(表格)
    for 行 in 表格.rows:
        for 单元格 in 行.cells:
            print(单元格.text)
doc.save(r'D:\自动化\word\另存为新文档.docx')
相关推荐
Jacob程序员14 小时前
java导出word文件(手绘)
java·开发语言·word
q24985969314 小时前
前端预览word、excel、ppt
前端·word·excel
flashman91114 小时前
python在word中插入图片
python·microsoft·自动化·word
hairenjing112321 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
初九之潜龙勿用1 天前
C#结合JS解决Word添加无效位图导致进程停滞的问题
javascript·ui·c#·word·asp.net
火星技术2 天前
Excel快速转换文档word工具
word·excel
棱角~~2 天前
10款PDF转Word软件工具的使用感受及其亮点!!!
经验分享·pdf·word·学习方法
shujuwa663 天前
什么是开源软件(OSS)?
pdf·编辑器·电脑·word·开源软件
遇见小美好y3 天前
自己生成的页面,保存为图片,并下载word
前端·javascript·word
hairenjing11233 天前
在电脑上免费分区的 5 个有效磁盘分区软件工具
windows·stm32·嵌入式硬件·macos·电脑·word