Open In App

Working with Tables – Python .docx Module

Improve
Improve
Like Article
Like
Save
Share
Report

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:



Last Updated : 03 Jan, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads