【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; 如果想要获取在一定范围内的数的话,直接做…

关于header in Cpp

ctype.h是一个header in Cpp, 什么是header? 在C中,头文件(header file)是一种用于包含预定义函数、变量和声明的文件。头文件通常具有.h扩展名,并包含了用于在C程序中使用的函数原型、常量定义、类声明等信息。头文…

Golang笔试题:编写一个函数,接收一个整数参数n,输出n的阶乘结果

今天,我们开发的AI笔试题工具,ai扁食——AI程序员笔试系统给我出了中级Golang题目,就是这道题:《请编写一个函数,接收一个整数参数n,输出n的阶乘结果》,希望我写一个函数,输出n的阶乘…

华为云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 …

gRPC之gRPC流

1、gRPC流 从其名称可以理解,流就是持续不断的传输。有一些业务场景请求或者响应的数据量比较大,不适合使用普通的 RPC 调用通过一次请求-响应处理,一方面是考虑数据量大对请求响应时间的影响,另一方面业务场景的设计不一 定需…

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. 启用…

功能基础篇3——Python中的输入输出、文件读写、序列化

IO 文件读写 open open()为内置函数&#xff0c;用于读写文件 mode 读写 x&#xff0c;create&#xff0c;创建&#xff0c;文件存在报错&#xff0c;可写不可读r&#xff0c;read&#xff0c;读入&#xff0c;默认读写方式&#xff0c;文件不存在报错&#xff0c;可读不可…

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…

Ubuntu22.04 Opencv4.5.1 CPU和GPU编译攻略,Opencv CPU和GPU编译保姆教程 亲自测试。

1、安装opencv依赖 安装时最好更换一下源。 sudo apt-get -y update sudo apt-get -y install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get -y install libgtk-3-dev gfortran openexr libatlas-base-dev python3-dev pyt…

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

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

[python 刷题] 238 Product of Array Except Self

[python 刷题] 238 Product of Array Except Self 题目&#xff1a; Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. The product of any prefix or suffix of nums is guar…

程序员必须掌握的算法

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

pgsql/mysql/clickhouse性能对比

目前公司使用的关系型数据库版本较老&#xff0c;有计划对关系型数据库进行一次升级。有两个方案&#xff0c;一是将现在的mysql5.7升级到8.0&#xff0c;二是将数据库替换成pgsql15&#xff0c;所以对这两个库的查询写入和资源损耗进行一次对比。 前置准备 服务器 两台配置…

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

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