[Python] O caminho para o escritório automatizado: um guia prático para automação de palavras!


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
Insira a descrição da imagem aqui
python-docx (usamos esta biblioteca para a maioria das operações)

método de instalação:

pip instalar python-docx

Insira a descrição da imagem aqui
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
Insira a descrição da imagem aqui
:

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
Insira a descrição da imagem aqui

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.


Insira a descrição da imagem aqui
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)

Insira a descrição da imagem aqui

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:
Insira a descrição da imagem aqui
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:
Insira a descrição da imagem aqui

win32com converter doc para docx

Insira a descrição da imagem aqui
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:
Insira a descrição da imagem aqui

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()

Insira a descrição da imagem aqui
Abra um documento do Word existente e adicione conteúdo

Pré-requisitos:
Insira a descrição da imagem aqui

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:
Insira a descrição da imagem aqui

Resumir

É sobre isso que falarei hoje. Este artigo apresenta apenas brevemente o uso da automação de escritório.

おすすめ

転載: blog.csdn.net/liaozp88/article/details/132981584