虽然Word不好用, 但还必须得用它, python-docx是专门用于编辑Word文档的一个工具库, 它有两大用途, 自动化生成word文档 and 自动化修改文档

python word

1. 自定义样式

自定义样式

python可以自定义三类样式

段落样式

字符样式

表格样式(一般用不到)

这三类样式的创建方式基本一致, 只是创建参数 略有不同(1为段落样式, 2为字符样式, 3为表格样式)

以设置段落样式为例

# 创建自定义段落样式(第一个参数为样式名, 第二个参数为样式类型, 1为段落样式, 2为字符样式, 3为表格样式)

UserStyle1 = document.styles.add_style('UserStyle1', 1)

# 设置字体尺寸

UserStyle1.font.size = Pt(40)

# 设置字体颜色

UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00)

# 居中文本

UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 设置中文字体

UserStyle1.font.name = '微软雅黑'

UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')

2.理解结构关系

结构关系

往文档中插入文本内容, 首先要插入一个段落, 段落后面可追加字符, 但文档不能直接插入字符

段落之间会自动以 回车符号 分隔

段落 和 字符 可 各自设置独立的样式

实例: 插入段落, 插入段落后追加字符

# 使用自定义段落样式

document.add_paragraph('自定义段落样式', style = UserStyle1)

# 使用自定义字符样式

document.add_paragraph('').add_run('正月里采花无哟花采,二月间采花花哟正开,二月间采花花哟正开。三月里桃花红哟似海,四月间葡萄架哟上开,四月间葡萄架哟上开。', style = UserStyle2)

3. 插入图片

python-docx支持将图片插入文档, 且可以设置图片大小

插入图片

实例代码:

document.add_picture('少女17087938.jpg', width=Inches(5))

4.插入列表

插入列表

插入有序列表

document.add_paragraph('把冰箱门打开', style='List Number')

document.add_paragraph('把大象装进去', style='List Number')

document.add_paragraph('把冰箱门关上', style='List Number')

插入无序列表

document.add_paragraph('天地匆匆 惊鸿而过 路有千百个', style='List Bullet')

document.add_paragraph('遑遑无归 闲云逸鹤 人间红尘过', style='List Bullet')

document.add_paragraph('引势而流 鸿门乱局 各有各选择', style='List Bullet')

document.add_paragraph('乾震坎艮 坤巽离兑 定一切生克', style='List Bullet')

5.插入表格

插入表格

把表格看做二维数组, 然后往数组中填数据

rows_num = 5

cols_num = 6

table = document.add_table(rows=rows_num, cols=cols_num, style = 'Table Grid')

for r in range(rows_num):

for c in range(cols_num):

table.cell(r, c).text = "第{r}行{c}列".format(r = r+1, c = c+1)

完整源码:

from docx import Document

from docx.shared import Inches

from docx.dml.color import ColorFormat

from docx.shared import Pt

from docx.shared import RGBColor

from docx.oxml.ns import qn

from docx.enum.style import WD_STYLE_TYPE

from docx.enum.text import WD_ALIGN_PARAGRAPH

def main():

# 创建文档对象

document = Document()

# 设置默认字体

document.styles['Normal'].font.name = '微软雅黑'

document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')

# 创建自定义段落样式(第一个参数为样式名, 第二个参数为样式类型, 1为段落样式, 2为字符样式, 3为表格样式)

UserStyle1 = document.styles.add_style('UserStyle1', 1)

# 设置字体尺寸

UserStyle1.font.size = Pt(40)

# 设置字体颜色

UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00)

# 居中文本

UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 设置中文字体

UserStyle1.font.name = '微软雅黑'

UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')

# 创建自定义字符样式(第一个参数为样式名, 第二个参数为样式类型, 1为段落样式, 2为字符样式, 3为表格样式)

UserStyle2 = document.styles.add_style('UserStyle2', 2)

# 设置字体尺寸

UserStyle2.font.size = Pt(15)

# 设置字体颜色0c8ac5

UserStyle2.font.color.rgb = RGBColor(0x0c, 0x8a, 0xc5)

# 设置段落样式为宋体

UserStyle2.font.name = '宋体'

UserStyle2._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')

# 使用自定义段落样式

document.add_paragraph('自定义段落样式', style = UserStyle1)

# 使用自定义字符样式

document.add_paragraph('').add_run('正月里采花无哟花采,二月间采花花哟正开,二月间采花花哟正开。三月里桃花红哟似海,四月间葡萄架哟上开,四月间葡萄架哟上开。', style = UserStyle2)

# 设置粗体字

document.add_paragraph('设置粗体字:').add_run('粗体字').bold = True

# 设置斜体字

document.add_paragraph('设置斜体字:').add_run('斜体字').italic = True

# 设置字号50

document.add_paragraph('设置字号50:').add_run('50').font.size = Pt(50)

# 设置字体颜色为 af2626

document.add_paragraph('设置字体颜色:').add_run('颜色').font.color.rgb = RGBColor(0xaf, 0x26, 0x26)

# 样式叠加: 将字体改到30号并且将字体改成特定颜色;

doubleStyle = document.add_paragraph('同时设置文字颜色和字号:').add_run('颜色和尺寸')

doubleStyle.font.size = Pt(30)

doubleStyle.font.color.rgb = RGBColor(0xaf, 0x26, 0x26)

# 添加分页符

document.add_page_break()

# 创建 有序列表

document.add_paragraph('').add_run('有序列表').font.size = Pt(30)

document.add_paragraph('把冰箱门打开', style='List Number')

document.add_paragraph('把大象装进去', style='List Number')

document.add_paragraph('把冰箱门关上', style='List Number')

# 创建 无序列表

document.add_paragraph('').add_run('无序列表').font.size = Pt(30)

document.add_paragraph('天地匆匆 惊鸿而过 路有千百个', style='List Bullet')

document.add_paragraph('遑遑无归 闲云逸鹤 人间红尘过', style='List Bullet')

document.add_paragraph('引势而流 鸿门乱局 各有各选择', style='List Bullet')

document.add_paragraph('乾震坎艮 坤巽离兑 定一切生克', style='List Bullet')

# 添加分页符

document.add_page_break()

# 添加图片

document.add_paragraph('').add_run('添加图片').font.size = Pt(30)

document.add_picture('少女17087938.jpg', width=Inches(5))

# 添加分页符

document.add_page_break()

document.add_paragraph('').add_run('创建表格').font.size = Pt(30)

# 创建两行两列的表格

rows_num = 5

cols_num = 6

table = document.add_table(rows=rows_num, cols=cols_num, style = 'Table Grid')

for r in range(rows_num):

for c in range(cols_num):

table.cell(r, c).text = "第{r}行{c}列".format(r = r+1, c = c+1)

# 保存文档

document.save('Python生成的文档.docx')

if __name__ == '__main__':

main()

将源码保存为单独的python文件后,安装python-docx, 找一张图片,命名为少女17087938.jpg, 将图片与python文件放到同一个目录, 然后再python3环境下运行python文件即可! 最后附测试图片一张:

少女17087938.jpg

最终效果:

最终效果.png

自动化修改文档

保留格式并替换

实例: 将当前目录下, 所有docx文件内的"海南大学", 替换为"Hainan University", 并将新文件添加前缀new后, 保存到当前目录下

转换前

转换后

终端打印

import docx

import os

import re

# 传入三个参数, 旧字符串, 新字符串, 文件对象

def replace_text(old_text, new_text, file):

# 遍历文件对象

for f in file.paragraphs:

# 如果 旧字符串 在 某个段落 中

if old_text in f.text:

print("替换前:", f.text)

# 将段落存入 inline

inline = f.runs

# 遍历 段落 生成 i

for i in inline:

# 如果 旧字符串 在 i 中

if old_text in i.text:

# 替换 i.text 内文本资源

text = i.text.replace(old_text, new_text)

i.text = text

print("替换后===>", f.text)

def main():

# 获取当前目录下所有的文件名列表

old_file_names = os.listdir()

# 获取所有docx文件名列表

docx_file_names = []

for old_file_name in old_file_names:

if re.match(r'^[^~].*\.docx', old_file_name):

print(old_file_name)

docx_file_names.append(old_file_name)

for docx_file_name in docx_file_names:

try:

# 获取文件对象

file=docx.Document(docx_file_name)

# 三个参数: 旧的字符串, 新的字符串, 文件对象

print("开始替换:", docx_file_name)

replace_text('海南大学', 'Hainan University', file)

file.save('new_'+docx_file_name)

print(docx_file_name, "替换成功")

except:

print(docx_file_name, "替换失败")

pass

if __name__ == '__main__':

main()

python自动化办公实例展示_自动化办公 Python 操控 Word相关推荐

  1. python自动化办公实例展示_原创的20个Python自动化案例,一口一个,高效办公!...

    === 欢迎关注我的公众号:早起Python === 导读 大家好,自从4月底发布第一篇Python办公自动化办公系列文章以来,目前已经马不停蹄的更新了20个案例,累计阅读超10W+,为了方便大家阅读 ...

  2. python自动化办公实例展示_python自动化办公?学这些就够用了

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手? python在自动化办公领域越来越受欢迎,批量处 ...

  3. python自动化办公教程书籍_盘点使用Python进行自动化办公所需要的知识点

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量处理 ...

  4. 日常办公会用到的python模块-宝安2020年_商务办公软件应用与实践_高校邦_期末答案...

    宝安2020年_商务办公软件应用与实践_高校邦_期末答案9p9c 宝安2020年_商务办公软件应用与实践_高校邦_期末答案 关注公众号{帅搜}即可查询答案 支持:大学网课,智慧树,知到,超星,尔雅,学 ...

  5. python写闲鱼脚本_自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~

    1 目 标 场 景 闲鱼上,很多卖家选择在平台上卖虚拟商品,大部分虚拟商品的交易方式都是通过网盘链接来完成交易. 在很多时候,商品被买家拍下并付款后,都需要一段时间的等待,一直到卖家看到消息后才能完成 ...

  6. python中如何调用函数_如何调用python中的内置函数?(实例解析)

    对于第一次接触到python这门编程语言的朋友来说,刚刚开始学习python编程的时候对于python函数调用这一方面的了解比较少,在这篇文章之中我们就来了解一下python怎么调用函数. Pytho ...

  7. python爬取小游戏_如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)...

    简介: Python 是一门简单易学且功能强大的编程语言,无需繁琐的配置,掌握基本语法,了解基本库函数,就可以通过调用海量的现有工具包编写自己的程序,轻松实现批量自动化操作,可以极大提高办公和学习效率 ...

  8. python的设计理念和应用_菜鸟爱Python第1期:Python发展史?对Python最深刻的解读...

    这是胜天半子的第1篇原创. 前言 也许你不是一名程序员,也许你甚至都不是做IT行业的,但你的定位只要不是被时代所抛弃的老年人,你,多多少少应该听过"Python"一词,多多少少看到 ...

  9. python wx窗口无法关闭_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...

    针对Python这一话题每天后台都会有不少小伙伴提出问题,下面我就将这些问题进行汇整,产出"Python实战问题篇",我认为这些问题非常具有代表性,希望可以帮到大家. 第一类问题: ...

最新文章

  1. 如何配置代码自动校验功能
  2. SAP成都研究院CEC团队三巨头之一:M君的文章预告
  3. android 串口一直打开_串口通讯你真的会了吗?不妨来看看这些经验
  4. 【clickhouse】ClickHouse之DBA运维宝典
  5. python 如何看到图标_如何设置CEF窗口图标(在python中)
  6. [ACM_几何] F. 3D Triangles (三维三角行相交)
  7. JavaSE、JavaEE、JavaME的区别
  8. 【艾琪出品】《计算机应用基础》【试题汇总9】
  9. 概率论与数理统计(6):数理统计的基本概念
  10. go build cannot find package 问题
  11. c语言中文网_C语言学习网站推荐
  12. 树莓派官方显示屏亮度
  13. 杂货机器人翻车实录:会被路人“吓”到,还会跟错主人!3千美元怕是买了个寂寞?
  14. 我在 B 站挖到了 9 款深藏不露的工具,每个都好用到爆!
  15. Java 简单的摇骰子游戏:案例
  16. SQL Developer 19.2.1下载安装
  17. 互联网二手车的春天真的要来了吗?
  18. 云托管,边缘物理计算托管物理计算,你所需要了解的……
  19. AndroidStudio近场通信
  20. python建立题库随机抽题,用Python读取Excel题库随机组成Word版本试卷

热门文章

  1. 什么是图神经网络 (GNN)?
  2. OpenCV深度神经网络实现人体姿态评估
  3. 清晰易懂的Numpy进阶教程
  4. 可旋转的2K显示器,写代码逼格要到位,免费包邮送到家
  5. 16、设计模式-行为型模式-命令模式
  6. 《编写可维护的JavaScript》——1.7 直接量
  7. AC日记——欧几里得的游戏 洛谷 P1290
  8. 《基于场景的工程方法》作者问答录
  9. 笔记本电脑字母键盘总是打出数字_笔记本电脑,这些情况都是键盘坏了,换了就能好...
  10. 【Java常识】7.0 数组实现冒泡排序、选择排序和二分查找