CodeWords raises $9M seed round
BlogResources

Export SQL query to excel: manual and automated methods

How to export SQL query results to Excel using CLI tools, GUI clients, Python scripts, and automated scheduled workflows in 2026.

Aymeric ZhuoAymeric Zhuo3 min read
Export SQL query to excel: manual and automated methods

Exporting a SQL query to Excel is one of those tasks that sounds trivial until you do it for the fifth time this week. Copy the results, paste into a spreadsheet, fix the column widths, format the dates, email it to finance. Repeat on Monday. The manual version takes 10–15 minutes each time. The automated version takes an hour to build and then runs itself forever.

According to a 2024 Deloitte study on finance automation, finance teams spend an average of 25% of their time on data extraction and formatting — much of it SQL-to-Excel pipelines that could be automated.

Exporting from a GUI client

DBeaver (free, multi-database): Run the query → Right-click result set → Export Data → Choose "XLSX (Excel)" → Configure headers, date formatting, and sheet name → Save.

DataGrip (JetBrains): Run the query → Right-click result set → Export Data → Select "Excel (xlsx)" → Configure and export.

MySQL Workbench: Export as CSV and open in Excel, or use the "Export to Excel" plugin if available.

SQL Server Management Studio (SSMS): Right-click result grid → Save Results As → CSV (SSMS doesn't export native Excel). Open CSV in Excel.

Exporting from the command line

PostgreSQL: psql -c "COPY (SELECT * FROM orders) TO STDOUT WITH CSV HEADER" > output.csv

MySQL: mysql -e "SELECT * FROM orders" | tr '\t' ',' > output.csv

CLI exports produce CSV — not formatted Excel with named sheets, column widths, and styled headers.

Exporting with Python

Python is the sweet spot for exports that need formatting, multiple sheets, or conditional logic:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://user:pass@host/database")
df_orders = pd.read_sql("SELECT * FROM orders WHERE date >= '2026-01-01'", engine)

with pd.ExcelWriter("report.xlsx", engine="openpyxl") as writer:
    df_orders.to_excel(writer, sheet_name="Orders", index=False)

Advanced formatting with openpyxl supports bold headers, colored rows, auto-sized columns, named ranges, conditional formatting, and frozen headers.

Automating SQL-to-Excel exports on a schedule

Pipeline architecture: Trigger (schedule or on-demand) → Query executionExcel generation (formatted, multi-sheet) → Delivery (email, Google Drive, Slack) → Logging (row counts, errors).

In CodeWords, describe it to Cody: "Build a workflow that runs every Monday at 7 AM. Connect to the production MySQL database. Run three queries: weekly orders, revenue by category, new customers. Generate an Excel file with three sheets. Email to finance@company.com. Upload to Google Drive. Send a Slack confirmation." Each execution is isolated — a database timeout doesn't leave a half-sent email. The workflow retries failed queries and alerts you on Slack if something breaks.

Multi-sheet and formatted exports

Real-world Excel reports include: multiple sheets (raw data, summary, charts); named ranges for downstream formulas; conditional formatting to highlight outliers; and frozen headers. All are possible with openpyxl. For dashboards needing real-time collaboration, export to Google Sheets via the Sheets API instead — CodeWords supports this natively.

FAQ

How do I handle large result sets (100K+ rows)?

Use chunked processing with chunksize in pd.read_sql. For very large datasets (1M+ rows), export to CSV instead — Excel has a row limit of 1,048,576 per sheet.

Can I include charts in the automated Excel export?

openpyxl supports creating charts (bar, line, pie) programmatically. For more complex visualizations, generate as an image and embed it.

How do I schedule SQL exports without a dedicated server?

Use a serverless workflow platform. CodeWords runs scheduled workflows without requiring you to manage a server, cron job, or VM.

Build the pipeline in CodeWords. The templates library has reporting patterns you can adapt in minutes.

Get started today

Your first agent is free to build.

Describe what you need. Cody handles the build, the connections, and the deployment.