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 NOT python-docx import docx # Create an instance of a word document doc = docx.Document() # Add a Title to the document doc.add_heading( 'GeeksForGeeks' , 0 ) # Table data in a form of list data = ( ( 1 , 'Geek 1' ), ( 2 , 'Geek 2' ), ( 3 , 'Geek 3' ) ) # Creating a table object table = doc.add_table(rows = 1 , cols = 2 ) # Adding heading in the 1st row of the table row = table.rows[ 0 ].cells row[ 0 ].text = 'Id' row[ 1 ].text = 'Name' # Adding data from the list to the table for 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 location doc.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.
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 NOT python-docx import docx # Create an instance of a word document doc = docx.Document() # Add a Title to the document doc.add_heading( 'GeeksForGeeks' , 0 ) # Table data in a form of list data = ( ( 1 , 'Geek 1' ), ( 2 , 'Geek 2' ), ( 3 , 'Geek 3' ) ) # Creating a table object table = doc.add_table(rows = 1 , cols = 2 ) # Adding heading in the 1st row of the table row = table.rows[ 0 ].cells row[ 0 ].text = 'Id' row[ 1 ].text = 'Name' # Adding data from the list to the table for 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 table table.style = 'Colorful List' # Now save the document to a location doc.save( 'gfg.docx' ) |
Output: