[Python] El camino hacia la oficina automatizada: ¡una guía práctica para la automatización de Word!


Prefacio

La mayoría de las veces, cuando se usa Python para operar Word, es una operación de escritura. También hay algunos casos en los que se utilizan operaciones de lectura, que se explicarán en este tutorial. Este curso utiliza principalmente las siguientes cuatro bibliotecas. Instálelas con anticipación. .

1. Instalación ambiental

Actualizar pip (para facilitar la instalación de las últimas bibliotecas)

python -m pip install -U pip setuptools
Insertar descripción de la imagen aquí
python-docx (usamos esta biblioteca para la mayoría de las operaciones)

metodo de instalacion:

pip instala python-docx

Insertar descripción de la imagen aquí
Instrucciones:

de docx import Documento
de docx.shared import
Documentación oficial en pulgadas:

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

win32com (utilizado principalmente para convertir documentos a formato docx)

metodo de instalacion:

Cómo utilizar pip install pypiwin32
Insertar descripción de la imagen aquí
:

importar win32com
desde win32com.client importar envío,
documentación oficial constante:

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

mailmerge (utilizado para generar una gran cantidad de documentos del mismo tipo según plantillas)

metodo de instalacion:

instalación de pip docx-mailmerge

Instrucciones:

de mailmerge importar
la documentación oficial de MailMerge:

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

matplotlib (biblioteca de dibujo de Python, explicada brevemente en este número, habrá cursos especiales más adelante)

metodo de instalacion:

instalación de pip en matplotlib

Instrucciones:

importe matplotlib.pyplot como
documentación oficial de plt:

https://matplotlib.org/3.2.2/tutorials/introductory/sample_plots.html
Insertar descripción de la imagen aquí

2. Pasos de uso

1. Importar la biblioteca

Código de ejemplo 1:

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

El efecto es el siguiente:

2. Leer datos

El código es el siguiente (ejemplo):

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

Los datos solicitados por la red URL utilizada aquí.


Insertar descripción de la imagen aquí
Código de muestra 0.1 Python-docx nuevo 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)

Insertar descripción de la imagen aquí

Python-docx edita documentos existentes

Muchas veces necesitamos agregar nuestro propio contenido a un documento de Word existente, así que veamos rápidamente cómo hacerlo~

Documento antiguo:
Insertar descripción de la imagen aquí
Tal vez dirás, no me equivoco, ¿solo estas tres frases? Sí, con estas tres frases has completado la copia del documento antiguo, si quieres modificarlo ¡simplemente añade el contenido directamente!

El efecto es el siguiente:
Insertar descripción de la imagen aquí

win32com convierte documentos a docx

Insertar descripción de la imagen aquí
Código de muestra:

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)

El efecto es el siguiente:
Insertar descripción de la imagen aquí

win32com opera palabra

Abra un nuevo documento de Word y agregue contenido

Código de muestra

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

Insertar descripción de la imagen aquí
Abra un documento de Word existente y agregue contenido

Requisitos previos:
Insertar descripción de la imagen aquí

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

El efecto es el siguiente:
Insertar descripción de la imagen aquí

Resumir

De lo anterior es de lo que hablaré hoy. Este artículo solo presenta brevemente el uso de la automatización de oficinas.

Supongo que te gusta

Origin blog.csdn.net/liaozp88/article/details/132981584
Recomendado
Clasificación