pyexcel
A wrapper library that provides one API to read, manipulate and writedata in different excel formats
What it is and what it does
pyexcel abstracts away the complexity of working with different spreadsheet and tabular file formats by providing a unified Python API. Instead of learning separate libraries for CSV, Excel, ODS, and JSON, you work with a single set of functions that handle reading, writing, and converting between formats transparently. The package supports multiple data sources—physical files, in-memory data, SQLAlchemy tables, Django models, and Python data structures—and can return results as dictionaries, arrays, or records.
The library is designed for developers who need to move data between formats or extract tabular information without worrying about format-specific quirks. It supports streaming for large datasets through generator-based APIs and handles multiple sheets in workbooks. However, it does not preserve formatting (fonts, colors, charts) or read password-protected files, so it is best suited for data extraction and transformation rather than document preservation.
Use it for:
- Extract data from an Excel file and convert it to CSV or JSON for processing or sharing
- Read multiple sheets from a workbook into Python dictionaries or arrays for analysis
- Batch convert a folder of XLS files to XLSX or other formats using a single API
- Load tabular data from various sources (CSV, ODS, JSON) into a consistent in-memory structure
- Stream large spreadsheets as generators to avoid loading entire files into memory
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a single API to read, write, and manipulate data across multiple spreadsheet and tabular file formats including CSV, TSV, XLS, XLSX, ODS, JSON, and HTML.
Yes. pyexcel is actively maintained, has low install friction, carries a permissive license, and solves a real problem—unifying access to multiple spreadsheet formats. It is well-suited for data extraction, format conversion, and tabular data handling. Install it if you work with multiple file formats and want to avoid format-specific boilerplate; skip it if you only need to work with a single format or require advanced formatting preservation.
Install
pyexcel on PyPI
pip
pip install pyexceluv
uv add pyexcelpoetry
poetry add pyexcelInstalling pyexcel
Before you install
Low friction installation with three lightweight runtime dependencies (lml, pyexcel-io, texttable). The package is actively maintained with a recent release and 1293 repository stars, indicating stable ongoing support.
License in practice
Licensed under New BSD (permissive), allowing commercial and private use with minimal restrictions beyond attribution and liability disclaimers.
Quickstart
pip install pyexcel
import pyexcel as p
records = p.get_records(file_name="data.xls")
for row in records:
print(row)
Requires Python 3.6 or later. Fonts, colors, charts, and password-protected XLS/XLSX/ODS files are not supported.
Verify before relying
- Whether streaming APIs (iget_records, iget_array, isave_as, isave_book_as) are production-ready for large datasets
- Performance characteristics and memory usage for files with thousands of rows
- Compatibility with recent Excel versions and edge cases in XLSX/XLSM handling
Package facts
| License | New BSD (permissive) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — lml, pyexcel-io, texttable |
| Maintenance | actively maintained — 46 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,264,211/month — #3,181 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyexcel-0.7.6-py2.py3-none-any.whl
Keywords: python, tsv, tsvzcsv, csvz, xls, xlsx, ods
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
pyexcel-ioProvides a unified API to read and write data…
permissive · top 5,000 on PyPI
pyexcel-webioProvides a unified interface library for…
permissive · top 15,000 on PyPI
pyexcel-xlsReads, manipulates, and writes data in xls…
permissive · top 5,000 on PyPI
tablibTablib converts tabular data between multiple…
permissive · top 5,000 on PyPI
pyexcel-ods3Reads, manipulates, and writes data in ODS…
permissive · top 15,000 on PyPI
pyexcel-xlsxReads, manipulates, and writes xlsx and xlsm…
permissive · top 5,000 on PyPI
EbookLibEbookLib reads and writes EPUB2/EPUB3 files…
agpl · top 5,000 on PyPI
pyexcel-ezodfCreate, open, and modify OpenDocument Format…
permissive · top 15,000 on PyPI
parquetReads Apache Parquet files in pure Python and…
permissive · top 15,000 on PyPI
linear-tsvParses and writes tabular data in Linear TSV…
permissive · top 15,000 on PyPI