【Python】自动化办公之路:word自动化实战宝典!

文章目录

  • 前言
  • 一、环境安装
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • Python-docx 编辑已存在文档
  • win32com 将 doc 转为 docx
  • win32com 操作 word
  • 总结


前言

使用Python操作word大部分情况都是写操作,也有少许情况会用到读操作,在本次教程中都会进行讲解,本次课程主要用到以下4个库,请大家提前安装。

一、环境安装

升级pip(便于安装最新库)

python -m pip install -U pip setuptools
在这里插入图片描述
python-docx(我们大部分操作都是使用此库)

安装方法:

pip install python-docx

在这里插入图片描述
使用方法:

from docx import Document
from docx.shared import Inches
官方文档:

https://python-docx.readthedocs.io/en/latest/index.html

win32com(主要用作doc转docx格式转换用)

安装方法:

pip install pypiwin32
在这里插入图片描述
使用方法:

import win32com
from win32com.client import Dispatch, constants
官方文档:

https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word?view=word-pia

mailmerge(用作按照模板生成大量同类型文档)

安装方法:

pip install docx-mailmerge

使用方法:

from mailmerge import MailMerge
官方文档:

https://pypi.org/project/docx-mailmerge/

matplotlib(Python 的绘图库,本期简单讲解,后期会有专门的课程)

安装方法:

pip install matplotlib

使用方法:

import matplotlib.pyplot as plt
官方文档:

https://matplotlib.org/3.2.2/tutorials/introductory/sample_plots.html
在这里插入图片描述

二、使用步骤

1.引入库

例代码1:

from docx import Document
document = Document()
document.save('new.docx')

效果如下:

2.读入数据

代码如下(示例):

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


在这里插入图片描述
示例代码 0.1 Python-docx新建文档.py:

from docx import Documentdef GenerateNewWord(filename):document = Document()document.save(filename)if __name__ == "__main__":print("大家好!我们今天开始学习word文档自动化")print("我们先来直接生成一个名为‘new.docx’的文档")document = Document()document.save('new.docx')print("没错,里面什么都没有")# 我是华丽的分隔符print("我们使用函数生成一个word文档试试")newname = '使用函数生成的文档.docx'GenerateNewWord(newname)

在这里插入图片描述

Python-docx 编辑已存在文档

我们很多时候需要在已存在的word文档上添加自己的内容,那么我们赶紧看看应该怎样操作吧~

旧文档:
在这里插入图片描述
也许你会说,没有没搞错,就这三句话?是的,就这三句,你就完成了旧文档的复制,如果你想修改,直接添加内容就行了呢!

效果如下:
在这里插入图片描述

win32com 将 doc 转为 docx

在这里插入图片描述
示例代码:

import os
from win32com import client as wcdef TransDocToDocx(oldDocName,newDocxName):print("我是 TransDocToDocx 函数")# 打开word应用程序word = wc.Dispatch('Word.Application')# 打开 旧word 文件doc = word.Documents.Open(oldDocName)# 保存为 新word 文件,其中参数 12 表示的是docx文件doc.SaveAs(newDocxName, 12)# 关闭word文档doc.Close()word.Quit()print("生成完毕!")if __name__ == "__main__":# 获取当前目录完整路径currentPath = os.getcwd()print("当前路径为:",currentPath)# 获取 旧doc格式word文件绝对路径名docName = os.path.join(currentPath,'旧doc格式文档.doc')print("docFilePath = ", docName)# 设置新docx格式文档文件名docxName = os.path.join(currentPath,'新生成docx格式文档.docx')TransDocToDocx(docName,docxName)

效果如下:
在这里插入图片描述

win32com 操作 word

打开新的word文档并添加内容

示例代码

import win32com
from win32com.client import Dispatch, constants
import os# 创建新的word文档
def funOpenNewFile():word = Dispatch('Word.Application')# 或者使用下面的方法,使用启动独立的进程:# word = DispatchEx('Word.Application')# 如果不声明以下属性,运行的时候会显示的打开wordword.Visible = 1  # 0:后台运行 1:前台运行(可见)word.DisplayAlerts = 0  # 不显示,不警告# 创建新的word文档doc = word.Documents.Add()# 在文档开头添加内容myRange1 = doc.Range(0, 0)myRange1.InsertBefore('Hello word\n')# 在文档末尾添加内容myRange2 = doc.Range()myRange2.InsertAfter('Bye word\n')# 在文档i指定位置添加内容i = 0myRange3 = doc.Range(0, i)myRange3.InsertAfter("what's up, bro?\n")# doc.Save()  # 保存doc.SaveAs(os.getcwd() + "\\funOpenNewFile.docx")  # 另存为doc.Close()  # 关闭 word 文档word.Quit()  # 关闭 officeif __name__ == '__main__':print("当前文件路径名:",os.getcwd())print("调用funOpenNewFile()")funOpenNewFile()

在这里插入图片描述
打开已存在word文档并添加内容

前提条件:
在这里插入图片描述

import win32com
from win32com.client import Dispatch, constants
import os# 打开已存在的word文件
def funOpenExistFile():word = Dispatch('Word.Application')# 或者使用下面的方法,使用启动独立的进程:# word = DispatchEx('Word.Application')# 如果不声明以下属性,运行的时候会显示的打开wordword.Visible = 1  # 0:后台运行 1:前台运行(可见)word.DisplayAlerts = 0  # 不显示,不警告doc = word.Documents.Open(os.getcwd() + "\\3.1 win32com测试.docx") # 打开一个已有的word文档# 在文档开头添加内容myRange1 = doc.Range(0, 0)myRange1.InsertBefore('Hello word\n')# 在文档末尾添加内容myRange2 = doc.Range()myRange2.InsertAfter('Bye word\n')# 在文档i指定位置添加内容i = 0myRange3 = doc.Range(0, i)myRange3.InsertAfter("what's up, bro?\n")# doc.Save()  # 保存doc.SaveAs(os.getcwd() + "\\funOpenExistFile.docx")  # 另存为doc.Close()  # 关闭 word 文档word.Quit()  # 关闭 officeif __name__ == '__main__':print("当前文件路径名:",os.getcwd())print("调用funOpenExistFile()")funOpenExistFile()

效果如下:
在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了办公自动化的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git(6)——GitHub

目录 一、简介 二、概要 三、注册 ​四、创建仓库 五、推送本地代码 六、拉取远端代码 一、简介 在Git(5)中,我们已经对Git分支的概念和用法有了一定了解,对于在本地进行代码版本管理,其实当前所学的东西基本已经…

C语言生成随机数、C++11按分布生成随机数学习

C语言生成随机数 如果只要产生随机数而不需要设定范围的话,只要用rand()就可以;rand()会返回一随机数值, 范围在0至RAND_MAX 间;RAND_MAX定义在stdlib.h, 其值为2147483647; 如果想要获取在一定范围内的数的话,直接做…

华为云HECS安装docker并安装mysql

1、运行安装指令 yum install docker都选择y,直到安装成功 2、查看是否安装成功 运行版本查看指令,显示docker版本,证明安装成功 docker --version 3、启用并运行docker 3.1启用docker指令 systemctl enable docker 3.2 运行docker指令…

AI绘图提示词Stable Diffusion Prompt 笔记

基础 提示词分为正向提示词(positive prompt)和反向提示词(negative prompt),用来告诉AI哪些需要,哪些不需要词缀的权重默认值都是1,从左到右依次减弱,权重会影响画面生成结果。AI …

LLM预训练之RLHF(一):RLHF及其变种

在ChatGPT引领的大型语言模型时代,国内外的大模型呈现爆发式发展,尤其是以年初的LLaMA模型为首的开源大模型和最近百川智能的baichuan模型,但无一例外,都使用了「基于人类反馈的强化学习」(RLHF)来提升语言…

7.代理模式

1.UML 2.代码 #include <iostream> using namespace std;class Subject{ public:virtual void Request() 0; };class RealSubject:public Subject { public:virtual void Request(){cout << "RealSubject" << endl;} }; class Proxy:public Subj…

【结构型】代理模式(Proxy)

目录 代理模式(Proxy)适用场景代理模式实例代码&#xff08;Java&#xff09; 代理模式(Proxy) 为其他对象提供一种代理以控制对这个对象的访问。Proxy 模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候。 适用场景 远程代理 (Remote Proxy) 为一个对象在不同…

【Git】03-GitHub

文章目录 1. GitHub核心功能2. GitHub搜索项目3. GitHub搭建个人博客4. 团队项目创建5. git工作流选择5.1 需要考虑的因素5.2 主干开发5.2 Git Flow5.3 GitHub Flow5.4 GitLab Flow(带生产分支)5.4 GitLab Flow(带环境分支)5.4 GitLab Flow(带发布分支) 6. 分支集成策略7. 启用…

redis桌面连接工具Another Redis Desktop Manager使用介绍

Another Redis Desktop Manager是一种类似于navicat的数据库连接工具&#xff0c;专门用来连接redis&#xff0c;使用起来非常简单方便&#xff0c;在这里推荐给大家。 没有用过这个软件的&#xff0c;首先通过下面的网盘链接下载Another Redis Desktop Manager 百度网盘redi…

权限提升WIN篇(腾讯云,CS,MSF)

溢出漏洞 信息收集 操作系统版本ver&#xff0c;systeminfo漏洞补丁信息systeminfo操作系统位数systeminfo杀软防护tasklist /svc网络netstat -ano,ipconfig当前权限whoami 筛选EXP 根据前面的信息收集中的系统版本&#xff0c;位数和补丁情况筛选出合适的EXP 提权 根据EX…

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴 在开发过程中&#xff0c;需要长按TextField输入框cut、copy设置为中文“复制、粘贴”&#xff0c;这里记录一下设置的代码。 一、pubspec.yaml设置flutter_localizations 在pubspec.yaml中设置flutter_l…

程序员必须掌握的算法

引言 作为一名程序员&#xff0c;掌握一些重要的算法是必不可少的。算法是解决问题的方法和步骤&#xff0c;对于程序员来说&#xff0c;熟悉和掌握一些常见的算法可以提高编程能力&#xff0c;解决复杂的计算问题。与此同时&#xff0c;算法是计算机科学中的核心概念&#xff…

Cilium 1.11:服务网格的未来已来

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Linux Ubuntu命令行快速配置C++开发环境

本文介绍在Linux操作系统的Ubuntu版本中&#xff0c;基于命令行&#xff0c;快速配置C 编辑、编译、运行的代码开发环境的简便方法。 在之前的文章Linux操作系统Ubuntu 22.04配置Visual Studio Code与C代码开发环境的方法(https://blog.csdn.net/zhebushibiaoshifu/article/det…

星际争霸之小霸王之小蜜蜂(十三)--接着奏乐接着舞

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十二&#xff09;--猫有九条命 星际争霸之小霸王之小蜜蜂&#xff08;十一&#xff09;--杀杀杀 星际争霸之小霸王之小蜜蜂&#xff08;十&#xff09;--鼠道 星际争霸之小霸王之小蜜蜂&#xff08;九&#xff09;--狂鼠之…

什么是集成测试?集成测试方法有哪些?

1、基本概念&#xff1a; 将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试&#xff0c;一般来说是以模块和子系统为单位进行测试。 2、集成测试包含的层次&#xff1a; 1. 模块内的集成&#xff0c;主要是…

OA 电子审批流程是什么?

公司中&#xff0c;最最最常见也是最最最多的就是——各种审批。 我当年第一次实习&#xff0c;在一家国企的行政部门&#xff0c;我们部门领导那个时候最主要的工作就是“打通流程”&#xff0c;咱也不知道他在打通什么流程&#xff0c;反正这个很重要就是了。 结果&#xf…

CSS动效合集之实现气泡发散动画

前言 &#x1f44f;CSS动效合集之实现气泡发散动画&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义一个数组bubbles&#xff0c;用来存储气泡列表的基本新&#xff0c;w表示宽高&#xff0c;x表示绝对定位…

130. 被围绕的区域

130. 被围绕的区域 题目-中等难度示例1. 新建boardbfs2. 哈希bfs 题目-中等难度 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 ‘X’ 和 ‘O’ &#xff0c;找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例 示例 1&#x…

浅谈C++|类的继承篇

引子&#xff1a; 继承是面向对象三大特性之一、有些类与类之间存在特殊的关系&#xff0c;例如下图中: 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承的技术&#xff0c;减少…