#+TITLE: tabular-reader
* tabular_reader
** Description
A module that maps information from each row in XLSX, XLS, or CSV
files to a ~SimpleNamespace~ object, providing a uniform interface
across different spreadsheet and data formats. Similar to Python's
native [[https://docs.python.org/3/library/csv.html#csv.DictReader][csv.DictReader]] but with support for multiple file types.
** Installing
#+begin_src bash
pip install tabular-reader
#+end_src
** Examples
*** Basic usage with XLSX
#+begin_src python
from tabular_reader import TabularReader
reader = TabularReader("names.xlsx", worksheet="Sheet1")
for row in reader:
print(row.first_name, row.last_name)
#+end_src
Output:
#+begin_src
Boris Johnson
Donald Trump
Mark Rutte
#+end_src
*** Reading CSV files
#+begin_src python
from tabular_reader import TabularReader
reader = TabularReader("data.csv")
for row in reader:
print(row.email, row.phone)
#+end_src
*** Reading XLS files
#+begin_src python
from tabular_reader import TabularReader
reader = TabularReader("legacy_data.xls")
for row in reader:
print(row.id, row.name)
#+end_src
** Custom fieldnames
You can specify fieldnames manually:
#+begin_src python
reader = TabularReader(
"data.xlsx",
fieldnames=["id", "email", "username"]
)
for row in reader:
print(row.id, row.email)
#+end_src
** Skip blank lines
Filter out empty rows:
#+begin_src python
reader = TabularReader(
"data.csv",
skip_blank_lines=True
)
for row in reader:
print(row)
#+end_src
** Keyword arguments
*** For Excel files (XLSX/XLS)
Pass any ~openpyxl.load_workbook~ keyword arguments:
#+begin_src python
reader = TabularReader(
"names.xlsx",
worksheet="Sheet1",
read_only=False,
keep_vba=False,
data_only=False,
keep_links=True
)
#+end_src
*** For CSV files
Pass any ~csv.reader~ keyword arguments:
#+begin_src python
reader = TabularReader(
"data.csv",
delimiter=";",
quotechar='"',
encoding="utf-8"
)
#+end_src
** Features
- Automatic format detection by file extension
- Empty column filtering (only processes columns with headers)
- Uniform interface across XLSX, XLS, and CSV
- ~SimpleNamespace~ objects with attribute access (~row.field_name~)
- Python 3.6 - 3.14 support
** Supported formats
| Format | Extension | Status |
|--------|-----------|-------------|
| Excel | .xlsx | ✓ Supported |
| Excel | .xls | ✓ Supported |
| CSV | .csv | ✓ Supported |
** Acknowledgements
- [[https://openpyxl.readthedocs.io/][openpyxl]]
- [[https://docs.python.org/3/library/csv.html][csv]] - Python's standard library
Metadata
Release files for tabular-reader 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tabular_reader-0.1.4.tar.gz | 4.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tabular_reader-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.0 kB
Release files / tabular_reader-0.1.4.tar.gz
| Download URL | tabular_reader-0.1.4.tar.gz |
|---|---|
| Size | 4.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1fdc463523b0942e5c741f30aebd7c2c9fb2f52c770e612f0b9dec2d3d6de47d
|
|
BLAKE2b-256 checksum How to use checksums |
d15b1784731dbe05605ab44f90589b6b332b33ee150f16695f36e5a45719a609
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 11, 2026.
Transparency logRelease files / tabular_reader-0.1.4-py3-none-any.whl
| Download URL | tabular_reader-0.1.4-py3-none-any.whl |
|---|---|
| Size | 4.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0bd15cde576c4d339223d08c66e69430918babf05b44fc8d88ad0006cc26bd78
|
|
BLAKE2b-256 checksum How to use checksums |
e201d6bd07bb19f2f3428b236c95ac932ff92b5694f42346fe01b7f753b49019
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 11, 2026.
Transparency logSecurity for tabular-reader 0.1.4
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for tabular_reader-0.1.4.tar.gz
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 Jun 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.