Tabalyst Report
The product behind the four formats: demo, outputs, batches and Python.
Tabalyst Report · ExcelAvailable
Tabalyst Report is an open-source tool that turns a data file into an interactive HTML report and a JSON profile, on your machine. Given a workbook with several sheets or tables, it finds the right one: you get a report when the choice is clear, and the list of candidates when it is not.
tabalyst report sales.xlsx
Analyzed 120 rows and 9 columns.
Report: sales.report.html
tabalyst report shop.xlsx
2 tables of shop.xlsx are equally plausible.
Nothing was analyzed.
Candidates:
$.Sales (8 rows)
$.Costs (5 rows)
tabalyst report shop.xlsx --collection Costs
Analyzed 5 rows and 2 columns.
Real output of tabalyst 0.6.0, paths shortened.
One clear chain · three steps
One workbook, possibly several sheets. Tabalyst Inspect picks the sheet or table to report, and Tabalyst Report writes two outputs from it.
Several sheets, a title above the data. The workbook is read locally and never modified.
Lists the sheets and tables, finds the header under the title and keeps one when the choice is clear. Here, Orders is much larger than Regions.
An interactive report for people, a structured profile for your tools. Both come from the one table that was selected.
With one table, there is nothing to choose. With several and no clear winner, Tabalyst stops, lists the candidates and you pick one with --collection.
Schematic view of the example workbook sales.xlsx. Row counts come from its real report.
Format
Sales next to Costs, and nothing says which one you want. Sheet names play no part in the choice: only what the sheets hold does.
Excel tables (named tables) can share a sheet. Each one is a candidate on its own, written $.Report.Orders. The sheet that holds them is listed, not analyzed.
Titles and blank rows above the table are skipped: the header is looked for in the first 50 rows. If the detection picks the wrong row, you set it.
The idea
One command for any workbook: tabalyst report file.xlsx. Nothing to configure when the right table is clear.
When it cannot choose, it says so before analyzing anything, lists every candidate with its row count, and prints one ready-to-run command per table.
Tabalyst Inspect finds the candidates and keeps one only if it is the only eligible table, or has at least 10 times more rows than the next. Otherwise it asks.
How Inspect chooses ↗Outputs
Tabalyst Report writes three files beside the workbook: sales.report.html, an interactive report for people; sales.report.json, a structured profile for code; and executions.json, the history of successful runs. The workbook is never modified.
A report covers one table: a sheet, or a named Excel table inside a sheet. Cells keep their Excel type, so numbers, booleans and dates are read as such, and a formula is read as its last calculated value.
Proof
A synthetic workbook with three sheets: Orders, Regions and Notes. Orders holds far more rows than Regions, and Notes has no header, so Tabalyst selects Orders, finds its header under the title and reports the 120 orders.
Run it
Tabalyst Report is open source and runs on your machine. It needs Python 3.11 or later.
pip install tabalyst# Also updates it: Tabalyst changes often
tabalyst report sales.xlsx# The report and the profile are written beside the workbook
tabalyst report shop.xlsx# Nothing is analyzed: it lists the candidates, such as $.Sales and $.Costs
tabalyst report shop.xlsx --collection Costs# Or run tabalyst inspect shop.xlsx to write the choice once in an Inspect file
import tabalyst # One workbook, one tablebatch = tabalyst.generate_reports(["sales.xlsx"], output_dir="reports") # Several sheets or tables: batch.failures lists the candidates.# Choose one in tabalyst.json: {"scan": {"excel": {"dataset_path": "$.Costs"}}}batch = tabalyst.generate_reports( ["shop.xlsx"], output_dir="reports", config_path="tabalyst.json",)print(batch.succeeded)
The Excel guide ↗ and the Inspect guide ↗ cover the choice of table and of header row.
Scope, not hype
.xlsx and .xlsm are read. Save an older .xls file as .xlsx first.#DIV/0! reads as empty.The known limitations ↗ list the size limits.
Your next workbook
Install Tabalyst, point it at an .xlsx file and open the report, or pick from the candidates.