Working with Tables – Python .docx Module

03 Jan, 2021
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.
Pip command to install this module is:
pip install python-docx
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 NOT python-docximport docx  # Create an instance of a word documentdoc = docx.Document()  # Add a Title to the documentdoc.add_heading('GeeksForGeeks', 0)  # Table data in a form of listdata = (    (1, 'Geek 1'),    (2, 'Geek 2'),    (3, 'Geek 3'))  # Creating a table objecttable = doc.add_table(rows=1, cols=2)  # Adding heading in the 1st row of the tablerow = table.rows[0].cellsrow[0].text = 'Id'row[1].text = 'Name'  # Adding data from the list to the tablefor id, name in data:      # Adding a row and then adding data in it.    row = table.add_row().cells    # Converting id to string as table can only take string input    row[0].text = str(id)    row[1].text = name  # Now save the document to a locationdoc.save('gfg.docx')
Output:
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.
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 NOT python-docximport docx  # Create an instance of a word documentdoc = docx.Document()  # Add a Title to the documentdoc.add_heading('GeeksForGeeks', 0)  # Table data in a form of listdata = (    (1, 'Geek 1'),    (2, 'Geek 2'),    (3, 'Geek 3'))  # Creating a table objecttable = doc.add_table(rows=1, cols=2)  # Adding heading in the 1st row of the tablerow = table.rows[0].cellsrow[0].text = 'Id'row[1].text = 'Name'  # Adding data from the list to the tablefor id, name in data:      # Adding a row and then adding data in it.    row = table.add_row().cells    row[0].text = str(id)    row[1].text = name  # Adding style to a tabletable.style = 'Colorful List'  # Now save the document to a locationdoc.save('gfg.docx')
Output:
Technical Scripter 2020
Python
Technical Scripter
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Different ways to create Pandas Dataframe
Enumerate() in Python
Read a file line by line in Python
How to Install PIP on Windows ?
*args and **kwargs in Python
Python Classes and Objects
Iterate over a list in Python
Convert integer to string in Python
Python OOPs Concepts