Diretório de artigos
Prefácio
Na maioria das vezes, ao usar Python para operar o Word, é uma operação de gravação. Há também alguns casos em que são usadas operações de leitura, que serão explicadas neste tutorial. Este curso usa principalmente as quatro bibliotecas a seguir. Instale-as com antecedência .
1. Instalação do ambiente
Atualize o pip (para facilitar a instalação das bibliotecas mais recentes)
python -m pip install -U pip setuptools
python-docx (usamos esta biblioteca para a maioria das operações)
método de instalação:
pip instalar python-docx
Instruções:
de docx import Documento
de docx.shared import
Documentação oficial de polegadas:
https://python-docx.readthedocs.io/en/latest/index.html
win32com (usado principalmente para converter o formato doc para docx)
método de instalação:
Como usar pip install pypiwin32
:
import win32com
from win32com.client import Dispatch, constantes
da documentação oficial:
https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.word?view=word-pia
mala direta (usada para gerar um grande número de documentos do mesmo tipo de acordo com modelos)
método de instalação:
pip instalar docx-mailmerge
Instruções:
da importação de mailmerge
Documentação oficial do MailMerge:
https://pypi.org/project/docx-mailmerge/
matplotlib (biblioteca de desenho Python, brevemente explicada nesta edição, haverá cursos especiais posteriormente)
método de instalação:
pip instalar matplotlib
Instruções:
importe matplotlib.pyplot como
documentação oficial do plt:
https://matplotlib.org/3.2.2/tutorials/introductory/sample_plots.html
2. Etapas de uso
1. Importe a biblioteca
Código de exemplo 1:
from docx import Document
document = Document()
document.save('new.docx')
O efeito é o seguinte:
2. Leia os dados
O código é o seguinte (exemplo):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
Os dados solicitados pela rede de URLs aqui utilizados.
Código de amostra 0.1 Python-docx novo document.py:
from docx import Document
def 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 edita documentos existentes
Muitas vezes precisamos adicionar nosso próprio conteúdo a um documento do Word existente, então vamos ver rapidamente como fazer isso ~
Documento antigo:
Talvez você diga, não me engano, apenas essas três frases? Sim, com essas três frases você completou a cópia do documento antigo, se quiser modificá-lo basta adicionar o conteúdo diretamente!
O efeito é o seguinte:
win32com converter doc para docx
Código de amostra:
import os
from win32com import client as wc
def 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)
O efeito é o seguinte:
win32com opera palavra
Abra um novo documento do Word e adicione conteúdo
Código de amostra
import win32com
from win32com.client import Dispatch, constants
import os
# 创建新的word文档
def funOpenNewFile():
word = Dispatch('Word.Application')
# 或者使用下面的方法,使用启动独立的进程:
# word = DispatchEx('Word.Application')
# 如果不声明以下属性,运行的时候会显示的打开word
word.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 = 0
myRange3 = doc.Range(0, i)
myRange3.InsertAfter("what's up, bro?\n")
# doc.Save() # 保存
doc.SaveAs(os.getcwd() + "\\funOpenNewFile.docx") # 另存为
doc.Close() # 关闭 word 文档
word.Quit() # 关闭 office
if __name__ == '__main__':
print("当前文件路径名:",os.getcwd())
print("调用funOpenNewFile()")
funOpenNewFile()
Abra um documento do Word existente e adicione conteúdo
Pré-requisitos:
import win32com
from win32com.client import Dispatch, constants
import os
# 打开已存在的word文件
def funOpenExistFile():
word = Dispatch('Word.Application')
# 或者使用下面的方法,使用启动独立的进程:
# word = DispatchEx('Word.Application')
# 如果不声明以下属性,运行的时候会显示的打开word
word.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 = 0
myRange3 = doc.Range(0, i)
myRange3.InsertAfter("what's up, bro?\n")
# doc.Save() # 保存
doc.SaveAs(os.getcwd() + "\\funOpenExistFile.docx") # 另存为
doc.Close() # 关闭 word 文档
word.Quit() # 关闭 office
if __name__ == '__main__':
print("当前文件路径名:",os.getcwd())
print("调用funOpenExistFile()")
funOpenExistFile()
O efeito é o seguinte:
Resumir
É sobre isso que falarei hoje. Este artigo apresenta apenas brevemente o uso da automação de escritório.