Skip to main content

SQL2Excel logo

A Python library for exporting SQL queries and/or Pandas DataFrames to Excel, with support for chart generation and data visualization.

PyPI Version Python Version CI Build Status Code Coverage License PyPI Downloads Code Style: Black Documentation GitHub Stars

SQL2Excel

SQL2Excel exports result sets from SQL queries and/or Pandas DataFrames into Excel including chart generation and data visualization with a strong focus on automating and simplifying the process of exporting data from SQL/Python to Excel. It supports various chart types and allows for basic chart customization.

Installation

  • Create a virtual environment (.env)
python -m venv .env
  • Activate the environment
source .env/bin/activate
  • Install SQL2Excel and its dependencies
pip install SQL2Excel
  • Verify the Installation
python -c "import sql2excel; print(f'version: {sql2excel.__version__}')";

!!! tip To install SQL2Excel dependencies for a specific database (e.g. Postgres), see Database Support.

Getting Started

SQL2Excel requires you to add special comments (called directives) to your SQL script to instruct it how to export the query result.

-- my_script.sql

-- chart
SELECT year, revenue FROM annual_sales;

-- chart=bar
SELECT region, SUM(revenue) AS total_revenue
FROM regional_sales
GROUP BY region
ORDER BY total_revenue DESC;

-- exec
CREATE TEMPORARY TABLE tmp_table AS ...

-- This query will be SKIPPED
SELECT * from foo.bar
  • -- chart directive will export the query result to Excel without generating any chart because the chart type is not provided.

  • -- char=bar directive will export the query result to Excel and generate a bar chart from the result.

  • -- exec executes the third query without exporting any result. This is useful for DDL, DML, and temporary tables that might be used in subsequent query.

  • The fourth query will be ignored because it does not contain any directives.

Then, run the command sql2excel in your terminal:

sql2excel my_script.sql \
    --dialect postgresql \
    --host localhost \
    --port 5432 \
    --user username \
    --password secret \
    --dbname my_db \
    --output report.xlsx

That's it!

Story of SQL2Excel

SQL2Excel stems from a project at CREST to profile the scientific performance of the African countries across 52 scientific disciplines using the Web of Science database. This resulted in generating 1560 reports, each with several performance indicators and different visualizations. SQL2Excel made such job possible!

Why Use SQL2Excel

The main reasons why you should consider using SQL2Excel despite the existence of Openpyxl are:

  • Integration with SQL

    • SQL2Excel executes your SQL script and exports all results to Excel including chart generation.
    • SQL2Excel offers support for exporting data from parameterized queries. This improves the efficiency of repetitive tasks.
  • Support for Pandas DataFrames

    • SQL2Excel exports DataFrames to Excel. While Pandas supports exporting dataframe to Excel, SQL2Excel offers more than just writing the dataframe to Excel. SQL2Excel can generate a full report from different dataframes including different visualizations.
  • Matplotlib and externally generated images

    • Inserting Matplotlib figures and externally generated images is straightforward in SQL2Excel. This is useful if you require advanced charts that cannot be generated in Excel.
  • Simple API

    • SQL2Excel offers simple API for data export and chart generation.

SQL2Excel is not meant as a library for reading/writing into Excel and it is not suitable for fine customizations of Excel. Its purpose is to improve productivity, automate repetitive tasks, and simplify data export and chart creation. If you want more control over excel from within Python, use Openpyxl instead.

Database Support

SQL2Excel works with any database supported by SQLAlchemy. This includes PostgreSQL, MySQL, Oracle, and SQL Server. It is currently tested against PostgreSQL and MySQL.

PostgreSQL

To install SQL2Excelfor postgres you have two options:

  • Using pyscopg2-binary
pip install SQL2Excel[postgres]
  • Using pycopg3
pip install SQL2Excel[postgres-psycopg]

MySQL

pip install SQL2Excel[mysql]

Oracle

pip install SQL2Excel[oracle]

SQL Server

pip install SQL2Excel[mssql]

Snowflake

pip install SQL2Excel[snowflake]

Databricks

pip install SQL2Excel[databricks]

BigQuery

pip install SQL2Excel[bigquery]

Official Documentation

The official documentation is available here.

Release files for SQL2Excel 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SQL2Excel 0.1.0
File Size Uploaded
sql2excel-0.1.0.tar.gz 48.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SQL2Excel 0.1.0
File Interpreter ABI Platform
sql2excel-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 87.2 kB

Release files / sql2excel-0.1.0.tar.gz

Download URL sql2excel-0.1.0.tar.gz
Size 48.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b13ab552fda3b4d2f50ec6fbabccb026333c7c98f0e68b41999c3f80daa08055
BLAKE2b-256 checksum
How to use checksums
44f0e8ebb7085ba8ae3a221a747582ac8a2d698da4d62f3cc6a80ddef8cc6af0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release files / sql2excel-0.1.0-py3-none-any.whl

Download URL sql2excel-0.1.0-py3-none-any.whl
Size 38.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
abd7fccef1ee88cdd3d38e60c974f8cb744a22aaa1488140eceb19800cbe1175
BLAKE2b-256 checksum
How to use checksums
a5a2841f84f4b99abcd1b201dc6dbddd897614bb24e4ed0a19e46799365be79e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page