Click to share! ⬇️

In today’s data-driven world, the ability to efficiently manage and communicate information is essential. Excel, with its grid of cells, easy calculations, and visual chart capabilities, remains one of the most widely used tools for data presentation and analysis. But what if you want to automate the process of filling in Excel sheets or generating reports? That’s where Python steps in. With its vast array of libraries and its simplicity, Python provides an excellent medium to interact with Excel sheets. In this tutorial, we will explore how you can use Python to write data to an Excel sheet, ensuring you have a smooth integration between your data processing capabilities and your reporting tools.

  1. Setting Up Your Python Environment
  2. Introduction to the Openpyxl Library
  3. Creating a New Excel Workbook with Python
  4. Writing Data to Excel Cells: Basics
  5. Formatting Cells: Fonts, Colors, and Styles
  6. Adding Formulas and Functions to Cells
  7. Handling Multiple Sheets: Add, Delete, and Rename
  8. Generating and Inserting Charts with Python

Setting Up Your Python Environment

Before writing to Excel using Python, we need a properly configured Python environment. Begin by downloading the latest Python version from Python’s official website. Next, ensure you have pip, Python’s package installer. While many Python installations come with pip pre-installed, if yours doesn’t, follow the instructions on how to install pip.

For those looking to keep their project dependencies isolated, setting up a Virtual Environment is a good practice. Here’s how to do it:

python -m venv your_venv_name source your_venv_name/bin/activate

# On Windows, use:


Lastly, our main tool for this tutorial will be the openpyxl library. To get it, simply run:

pip install openpyxl

python -m venv your_venv_nameCreate a virtual environment
source your_venv_name/bin/activate (or Windows equivalent)Activate the virtual environment
pip install openpyxlInstall the openpyxl library

Remember, it’s vital to always activate your virtual environment before you begin working on your project. This ensures you’re using the correct dependencies and minimizes potential conflicts.

Now that your Python environment is ready, we can delve into the wonders of the Openpyxl library in the upcoming sections.

Introduction to the Openpyxl Library

Openpyxl is a powerful Python library designed for reading and writing Excel (xlsx) files. Whether you’re looking to create Excel documents from scratch, manipulate existing ones, or extract data from them, Openpyxl has you covered. Unlike other solutions that require the Microsoft Excel application to be installed, Openpyxl operates independently, making it a versatile choice for various platforms and environments.

Why Use Openpyxl?

  • Versatility: It supports both reading from and writing to Excel files.
  • Feature-rich: From cell styling and using formulas to adding images and charts, Openpyxl boasts a comprehensive range of capabilities.
  • Independence: No need for Excel to be installed on the machine. This is particularly useful for server-side operations or using systems where Excel isn’t available.

Key Functions of Openpyxl:

  • Loading existing workbook: load_workbook(filename)
  • Creating a new workbook: Workbook()
  • Accessing sheets, cells, rows, and columns
  • Cell formatting: adjusting fonts, colors, and borders
  • Implementing formulas, charts, and images

If you’ve ever been in a situation where you needed to automate the creation of reports, update Excel sheets programmatically, or just integrate Excel data into your Python application, Openpyxl is an invaluable tool. As we delve deeper into this tutorial, you’ll discover the potential this library holds and how you can harness it for your projects.

Creating a New Excel Workbook with Python

With Openpyxl, creating a new Excel workbook becomes a seamless process. If you’re aiming to construct reports, formulate templates, or store data for future reference, Openpyxl has you covered in just a few Python lines.

Begin by importing the Workbook class from the openpyxl module:

from openpyxl import Workbook

Next, initiate a new instance of the Workbook class. This action creates a new Excel workbook in the system’s memory:

wb = Workbook()

Every new workbook has an active worksheet by default. To access and work with this sheet:

ws =

Adding data to the sheet is straightforward. You can assign values directly using the cell’s coordinate notation:

ws['A1'] = "Hello"
ws['A2'] = "World"

Once you’ve made your desired modifications, save the workbook to a file with the save method:"sample.xlsx")

The result? A fresh Excel file named sample.xlsx with the words “Hello” in cell A1 and “World” in cell A2.

Pro-tip: Need more sheets? Utilize the create_sheet method to introduce additional worksheets for diverse data arrangements.

The simplicity of creating a workbook is just a starting point. Openpyxl truly shines when we dive into its advanced features, data manipulation techniques, and formatting options, all of which we’ll explore in subsequent sections.

Writing Data to Excel Cells: Basics

The essence of interacting with Excel using Openpyxl revolves around writing data to cells. Understanding the basics of this process ensures efficient data storage and presentation.

First, ensure you have an active workbook and worksheet:

from openpyxl import Workbook
wb = Workbook()
ws =

Assigning Values Directly: Assign values to cells using the cell’s coordinate notation, like A1, B2, etc.

ws['A1'] = "Name"
ws['B1'] = "Age"
ws['A2'] = "John Doe"
ws['B2'] = 29

Using Row and Column Indices: Alternatively, you can address cells using their row and column indices. Keep in mind that Openpyxl uses 1-based indexing.

ws.cell(row=3, column=1, value="Jane Smith")
ws.cell(row=3, column=2, value=25)

Appending Rows: For adding data row-by-row, especially when working with lists or data sequences, the append method is handy.

data = [
    ["Mark", 35],
    ["Linda", 28]
for entry in data:

Reading Data: To read or access the data from a cell:

print(ws['A1'].value)  # Outputs: Name

After populating your worksheet, remember to save the workbook:"data.xlsx")

Grasping these fundamental methods of writing to cells enables more complex operations, like data analysis and report generation. As you delve deeper into Openpyxl, you’ll discover a wealth of features and utilities that make Python-to-Excel operations a breeze.

Formatting Cells: Fonts, Colors, and Styles

A well-presented Excel sheet is not just about data, but also its presentation. Openpyxl offers a multitude of formatting options, enabling you to enhance the look and feel of your workbook, making it more readable and aesthetically pleasing.

Font Styles: Adjust font properties, such as name, size, boldness, and italics.

from openpyxl.styles import Font

font_style = Font(name='Arial', size=12, bold=True, italic=True)
ws['A1'].font = font_style

Background Color: Set background colors for specific cells to highlight or categorize data.

from openpyxl.styles import PatternFill

yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
ws['B2'].fill = yellow_fill

Borders: Add borders around cells to differentiate or emphasize certain sections.

from openpyxl.styles import Border, Side

thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
ws['C3'].border = thin_border

Cell Alignment: Control the alignment of content, both vertically and horizontally.

from openpyxl.styles import Alignment

center_aligned = Alignment(horizontal='center', vertical='center')
ws['D4'].alignment = center_aligned

Number Formatting: Format numerical data, be it currency, percentages, or dates.

ws['E5'].number_format = '$#,##0.00'

Combining Styles: Combine multiple styles to apply them simultaneously.

from openpyxl.styles import NamedStyle

combined_style = NamedStyle(name="combined_style", font=font_style, fill=yellow_fill, border=thin_border)
ws['F1'].style = combined_style

Remember, after making all your desired formatting changes, always save the workbook to preserve these modifications:"formatted_data.xlsx")

By mastering these formatting tools within Openpyxl, you can transform plain Excel sheets into captivating, well-organized documents, enhancing clarity and user experience.

Adding Formulas and Functions to Cells

One of the most powerful features of Excel is its ability to process and compute data through formulas and functions. With Openpyxl, integrating these calculations into your workbook programmatically becomes an easy task.

When adding formulas, remember to start them with an equal sign (=).

Basic Arithmetic Operations: For simple calculations, you can directly input the arithmetic operations.

ws['A1'] = 10
ws['A2'] = 20
ws['A3'] = "=A1+A2"  # This will sum the values of A1 and A2.

Using Built-in Functions: Excel’s wide range of built-in functions, like SUM, AVERAGE, or VLOOKUP, can be easily incorporated.

ws['B1'] = 5
ws['B2'] = 15
ws['B3'] = 25
ws['B4'] = "=SUM(B1:B3)"  # Sums up the values from B1 to B3.
ws['B5'] = "=AVERAGE(B1:B3)"  # Calculates the average of B1 to B3.

Advanced Functions: Leverage more complex functions to derive insights or manipulate data.

ws['C1'] = "apple"
ws['C2'] = "APPLE"
ws['C3'] = "=UPPER(C1)"  # Converts the text in C1 to uppercase.
ws['C4'] = "=IF(C2=C3, 'Match', 'No Match')"  # Compares C2 and C3 and prints 'Match' if they are the same.

Auto-fill Formulas: Efficiently propagate formulas across a range, adjusting cell references appropriately.

# Assuming D1 to D3 have values.
ws['D4'] = "=D1*0.1"  # Calculate 10% of D1's value.
# Use Openpyxl's auto_fill to copy formula across D5 to D7.
ws['D4'].auto_fill(start_cell=ws['D4'], end_cell=ws['D7'], fill_type='copy')

Always ensure you save the workbook after inserting formulas and functions:"formulas_data.xlsx")

Harnessing formulas and functions in Openpyxl not only automates calculations but also unlocks Excel’s potential to be a dynamic tool for data analysis, making your Python-generated workbooks more valuable and insightful.

Handling Multiple Sheets: Add, Delete, and Rename

In most real-world scenarios, an Excel workbook contains multiple worksheets, each dedicated to specific data or tasks. Openpyxl offers intuitive mechanisms to manage these sheets, ensuring organized and streamlined data presentation.

Adding a New Sheet: To create a new sheet in your workbook:

ws_new = wb.create_sheet("NewSheet")

By default, this new sheet is added at the end. To place it at a specific index, use:

ws_specific = wb.create_sheet("SpecificSheet", 0)  # This adds the sheet at the beginning.

Accessing Sheets: Retrieve a sheet either by its name or its index:

sheet_by_name = wb["NewSheet"]
sheet_by_index = wb.worksheets[0]

Renaming a Sheet: Change the title of an existing sheet effortlessly:

ws_new.title = "RenamedSheet"

Deleting a Sheet: Remove any sheet that’s no longer needed:

wb.remove(ws_new)  # Using the worksheet object.
# or
wb.remove(wb["RenamedSheet"])  # Using the sheet's name.

Listing All Sheets: To get an overview of all the sheets in the workbook:

sheet_names = wb.sheetnames

Setting the Active Sheet: Sometimes, you might want a specific sheet to be the one that’s displayed when the workbook is opened: = ws_specific  # Set the "SpecificSheet" as the active sheet.

After performing these operations, remember to save your workbook to reflect the changes:"multiple_sheets.xlsx")

Mastering sheet management with Openpyxl ensures you can structure your Excel workbooks efficiently, dividing content into logical, well-organized segments, making navigation and data interpretation a breeze for the end-user.

Generating and Inserting Charts with Python

Data visualization is integral to understanding and interpreting data. Excel charts are a powerful tool in this regard, and Openpyxl enables you to programmatically generate and embed these charts in your workbooks.

Preparing Data: Let’s assume you have some sales data in columns A and B, where A represents months and B represents sales figures.

data = [
    ["Month", "Sales"],
    ["January", 300],
    ["February", 320],
    ["March", 350]
for row in data:

Creating a Bar Chart: Visualize the above sales data with a bar chart.

from openpyxl.chart import BarChart, Reference

chart = BarChart()
values = Reference(ws, min_col=2, min_row=2, max_col=2, max_row=4)
labels = Reference(ws, min_col=1, min_row=2, max_col=1, max_row=4)

chart.add_data(values, titles_from_data=True)
ws.add_chart(chart, "E5")

Generating a Line Chart: For data that represents a progression (e.g., sales growth over months), a line chart can be more illustrative.

from openpyxl.chart import LineChart

line_chart = LineChart()
line_chart.add_data(values, titles_from_data=True)
ws.add_chart(line_chart, "E15")

Pie Chart for Proportional Data: Visualize market share or segment proportions with a pie chart.

from openpyxl.chart import PieChart

pie_chart = PieChart()
pie_chart.add_data(values, titles_from_data=True)
ws.add_chart(pie_chart, "E25")

Customizing Charts: Openpyxl allows for extensive chart customization, such as title addition, axis naming, and style adjustments.

chart.title = "Sales Data"
chart.y_axis.title = "Sales Value"
chart.x_axis.title = "Month"

Finally, after generating and inserting charts, always save the workbook:"charts_data.xlsx")

With Openpyxl, crafting visually appealing and insightful charts becomes a straightforward process. This empowers Python developers to not only manage and manipulate Excel data but also to present it in an impactful manner.

Click to share! ⬇️