Data exchange
Numbers and dates stored as text, invisible characters, duplicate keys, mixed types, blank rows inside a table.
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.
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'
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.
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.
Every check and its false-positive risk is documented in the repository.
Numbers and dates stored as text, invisible characters, duplicate keys, mixed types, blank rows inside a table.
Formula replaced by a constant, broken patterns, totals that miss rows, error values, hardcoded constants, links to other workbooks.
Hidden rows inside totals, merged cells in data, broken named ranges, macros and hidden sheets.
Columns reordered, renamed, added or removed; changed formulas, totals and number formats between two versions.
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.
pip install git+https://github.com/HlinorAI/sheetsentry.git — then run sheetsentry audit file.xlsx. A composite GitHub Action is included for CI.