Open source by Hlinor

The file looks fine. The import breaks.

A supplier price list, a bank report, a template your client filled in. It arrives every week and either stops your import or quietly delivers wrong numbers. SheetSentry checks .xlsx files that cross a company boundary and points to the exact cell.

No configuration. No signup. One dependency. Apache-2.0.

One file in, findings out

Example output from the repository README.

$ sheetsentry audit supplier-feed.xlsx

ERRORS (2)
  SD003  Price!A47 (+1)
      Column A 'SKU' looks like a key (named 'SKU') but holds 1 duplicated value.
      > 'A-1120' appears 2 times
  SF003  Budget!B58
      The formula in B58 aggregates column B 'Amount' up to row 55, but data
      continues to row 57. 2 values are left out of the total.
      > =SUM(B2:B55)

WARNINGS (1)
  SD001  Price!C12 (+3)
      Column C 'Price': 4 values are stored as text while 118 neighbours are
      a real number. Aggregates will not see these cells.
      > '1 250'

Who it is for

Teams that receive spreadsheets they did not build: price feeds headed for an ERP or online store, reports from banks and partners, templates filled in by clients. Anyone who has found out about a broken file from a wrong invoice.

Compare this week with last week

sheetsentry diff ignores values, which change every time, and reports what moved in the structure: renamed or reordered columns, a formula replaced by a typed-in number, a total that now covers fewer rows.

What it checks

Every check and its false-positive risk is documented in the repository.

SD

Data exchange

Numbers and dates stored as text, invisible characters, duplicate keys, mixed types, blank rows inside a table.

SF

Formulas

Formula replaced by a constant, broken patterns, totals that miss rows, error values, hardcoded constants, links to other workbooks.

SW

Hygiene

Hidden rows inside totals, merged cells in data, broken named ranges, macros and hidden sheets.

DF

Version drift

Columns reordered, renamed, added or removed; changed formulas, totals and number formats between two versions.

What it does not do

  • It does not evaluate formulas. It reads structure and the values cached by Excel, and says so when a file was never recalculated.
  • No support for .xls, VBA, Power Query or external connections.
  • It does not judge whether a number makes business sense.
  • It never edits the file.

How we use it

In our own mail workflow SheetSentry audits incoming workbooks in an isolated, network-disabled processor. Findings wait for human review, and mail intake keeps working even when the processor fails.

Read the engineering note

Install

Python 3.10+, one command.

pip install git+https://github.com/HlinorAI/sheetsentry.git — then run sheetsentry audit file.xlsx. A composite GitHub Action is included for CI.

Read the README