Trabajando con archivos word usando Python

Artículo original aquí

Python puede crear y modificar documentos de Word, que tienen la extensión de archivo .docx, con el módulo python-docx. Puedes instalar el módulo ejecutando 'pip install python-docx'.

Para hacer pruebas puedes bajarte este archivo word.

Cada pequeño cambio de estilo, py-docx lo considera como un 'run':

Leyendo documentos de Word

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
>>>import docx
>>> doc = docx.Document('demo.docx')
>>> len(doc.paragraphs)
   7
>>> doc.paragraphs[0].text
   'Document Title'
>>> doc.paragraphs[1].text
   'A plain paragraph with some bold and some italic'
>>> len(doc.paragraphs[1].runs)
   4
>>> doc.paragraphs[1].runs[0].text
   'A plain paragraph with some '
>>> doc.paragraphs[1].runs[1].text
   'bold'
>>> doc.paragraphs[1].runs[2].text
   ' and some '
>>> doc.paragraphs[1].runs[3].text
   'italic'

Obteninendo el texto completo de un archivo docx

1 2 3 4 5 6 7 8 9 10
import docx

def getText(filename):
    doc = docx.Document(filename)
    fullText = []
    for para in doc.paragraphs:
        fullText.append(para.text)
    return '\n'.join(fullText)

print(getText('demo.docx'))

Escribiendo un archivo de word

1 2 3 4 5
>>> import docx
>>> doc = docx.Document()
>>> doc.add_paragraph('Hello world!')
<docx.text.Paragraph object at 0x0000000003B56F60>
>>> doc.save('helloworld.docx')

Añadiendo encabezados

1 2 3 4 5 6 7 8 9 10 11 12
>>> doc = docx.Document()
>>> doc.add_heading('Header 0', 0)
<docx.text.Paragraph object at 0x00000000036CB3C8>
>>> doc.add_heading('Header 1', 1)
<docx.text.Paragraph object at 0x00000000036CB630>
>>> doc.add_heading('Header 2', 2)
<docx.text.Paragraph object at 0x00000000036CB828>
>>> doc.add_heading('Header 3', 3)
<docx.text.Paragraph object at 0x00000000036CB2E8>
>>> doc.add_heading('Header 4', 4)
<docx.text.Paragraph object at 0x00000000036CB3C8>
>>> doc.save('headings.docx')

Añadiendo saltos de línea y de página

1 2 3 4 5 6 7
 >>> doc = docx.Document()
 >>> doc.add_paragraph('This is on the first page!')
<docx.text.Paragraph object at 0x0000000003785518>
>>> doc.paragraphs[0].runs[0].add_break(docx.text.WD_BREAK.PAGE)
>>> doc.add_paragraph('This is on the second page!')
<docx.text.Paragraph object at 0x00000000037855F8>
>>> doc.save('twoPage.docx')

Añadiendo imágenes

1 2 3
>>> doc.add_picture('zophie.png', width=docx.shared.Inches(1),
height=docx.shared.Cm(4))
<docx.shape.InlineShape object at 0x00000000036C7D30>

Ejercicio 19

Si no lo has hecho ya, descarga este documento https://github.com/deleyva/automatiza-tu-aprendizaje/blob/master/demo.docx?raw=true

Y añádele un título y guárdalo.

Solución

import docx doc = docx.Document('demo.docx') doc.add_heading('Título añadido') doc.save('demo1.docx')

results matching ""

    No results matching ""