Create table in docx python

View Discussion

Improve Article

Save Article

  • Read
  • Discuss
  • View Discussion

    Improve Article

    Save Article

    Prerequisites: docx

    Word documents contain formatted text wrapped within three object levels. Lowest level- run objects, middle level- paragraph objects and highest level- document object. So, we cannot work with these documents using normal text editors. But, we can manipulate these word documents in python using the python-docx module. 

    Python docx module allows user to manipulate docs by either manipulating the existing one or creating a new empty document and manipulating it. It is a powerful tool as it helps you to manipulate the document to a very large extend. You can also add and manipulate tables using this module.

    To add a table we will use add_table() method as it will add a table in the word document.

    Syntax:

    doc.add_table(rows = None, cols = None)

    Parameters:

    • rows: Add n number of rows in the table.
    • cols: Add n number of cols in the table.

    First, we will save all the data in a list then we will create a table object with values of rows = 1 and cols = 2. Then we will add the headings in the table. After that, we will use .add_row() method to add a row then we will add the data in it.

    Table can only take a string as an input in its cells, so we have to convert the data into string if it is not.

    Installation

    Pip command to install this module is:

    pip install python-docx

    Approach

    • Import module
    • Declare docx object
    • Add table data as a list
    • Create table using above function
    • Save to document

    Example 1: Adding a table in a Word document.

    Python3

    import docx

    doc = docx.Document()

    doc.add_heading('GeeksForGeeks', 0)

    data = (

        (1, 'Geek 1'),

        (2, 'Geek 2'),

        (3, 'Geek 3')

    )

    table = doc.add_table(rows=1, cols=2)

    row = table.rows[0].cells

    row[0].text = 'Id'

    row[1].text = 'Name'

    for id, name in data:

        row = table.add_row().cells

        row[0].text = str(id)

        row[1].text = name

    doc.save('gfg.docx')

    Output:

    Create table in docx python

    The table so obtained is a simple table, but docx supports mechanism to style it. To style a table we use style method to select a style. 

    Syntax:

    table.style = String style_name

    Parameter:

    • String style_name: It is the name of the style from the list mentioned below.

    Approach

    • Import module
    • Create data to be inserted as list
    • Create table
    • Style it as required
    • Save to document

    Example 2: Adding a table with style in a word document.

    Python3

    import docx

    doc = docx.Document()

    doc.add_heading('GeeksForGeeks', 0)

    data = (

        (1, 'Geek 1'),

        (2, 'Geek 2'),

        (3, 'Geek 3')

    )

    table = doc.add_table(rows=1, cols=2)

    row = table.rows[0].cells

    row[0].text = 'Id'

    row[1].text = 'Name'

    for id, name in data:

        row = table.add_row().cells

        row[0].text = str(id)

        row[1].text = name

    table.style = 'Colorful List'

    doc.save('gfg.docx')

    Output:

    Create table in docx python


    How do you create a table in python using Word?

    The following are the steps to create a table in a Word DOCX document using Python..
    Create an object of Document class..
    Create an object of DocumentBuilder class..
    Start a table using DocumentBuilder. ... .
    Insert a cell using DocumentBuilder. ... .
    Set formatting of the cell using DocumentBuilder. ... .
    Set auto fit using auto_fit(aw..

    How do I create a table from docx?

    You need to follow the steps listed below:.
    Initialize object of Document class..
    Create Table object..
    Add the Table to Document..
    Create Rows and Columns..
    Apply AutoFit on Table Cells..
    Save output Word Document..

    How do you convert a table to docx in python?

    Approach.
    Import module..
    Declare docx object..
    Add table data as a list..
    Create table using above function..
    Save to document..

    How do I read a table from docx in python?

    Process the table data to pandas dataframe. Using the in-built attributes of python-docx library, read each rows of the table and retrieve the text from each cells and create python list of list containing each row. Then convert that python data structure to pandas DataFrame.