Tabalyst Report · ExcelAvailable

A workbook is not a table. Tabalyst finds it.

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.

The choice is clearA report, straight away
tabalyst report sales.xlsx
Analyzed 120 rows and 9 columns.
Report: sales.report.html
Several candidatesThe options, then your choice
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

From workbook to a view you can use.

One workbook, possibly several sheets. Tabalyst Inspect picks the sheet or table to report, and Tabalyst Report writes two outputs from it.

EXCEL WORKBOOK

Your workbook

Several sheets, a title above the data. The workbook is read locally and never modified.

TABLE SELECTION

Tabalyst Inspect

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.

TWO DELIVERABLES

Human + machine

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

Where workbooks get tricky

  • 01 / SHEETS

    Several sheets

    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.

  • 02 / TABLES

    Several tables in one sheet

    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.

  • 03 / HEADER

    A title above the data

    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

Simple. Clear. Smart.

Simple. Clear. Smart.
  • Simple

    One command for any workbook: tabalyst report file.xlsx. Nothing to configure when the right table is clear.

  • 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.

  • Smart

    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

What you get

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

See a real workbook report

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.

Source
Excel
Rows
120
Columns
9
Missing cells
13

Run it

Run it on your workbook

Tabalyst Report is open source and runs on your machine. It needs Python 3.11 or later.

  1. 1 · Install
    pip install tabalyst

    # Also updates it: Tabalyst changes often

  2. 2 · One workbook, one table
    tabalyst report sales.xlsx

    # The report and the profile are written beside the workbook

  3. 3 · Several sheets or tables: see the choices
    tabalyst report shop.xlsx

    # Nothing is analyzed: it lists the candidates, such as $.Sales and $.Costs

  4. 4 · Pick one
    tabalyst report shop.xlsx --collection Costs

    # Or run tabalyst inspect shop.xlsx to write the choice once in an Inspect file

The Excel guide ↗ and the Inspect guide ↗ cover the choice of table and of header row.

Scope, not hype

What to know before you start

  • Only .xlsx and .xlsm are read. Save an older .xls file as .xlsx first.
  • One table per run. Blocks separated by blank rows inside a sheet are not split into several tables, and a total row under the data counts as a record.
  • Cells keep their Excel type and a formula is read as its last calculated value. An error cell such as #DIV/0! reads as empty.
  • A sheet is read into memory, about 0.9 byte per byte of sheet XML. Password-protected workbooks are refused.

The known limitations ↗ list the size limits.

Your next workbook

Let Tabalyst find the table.

Install Tabalyst, point it at an .xlsx file and open the report, or pick from the candidates.