Database guides
Excel (XLSX) files
Treat a spreadsheet as a table and ask it SQL questions — no formulas, no pivot tables, no manual re-sorting.
AddisDB reads .xlsx workbooks directly and loads them into a queryable table, so you can run SQL against a spreadsheet without converting it to CSV first.
Who it is for
Spreadsheets are where an enormous amount of real business data lives — budgets, inventories, exports from systems nobody has API access to. They are excellent for editing and terrible for asking questions that involve grouping, joining, or more rows than a screen.
They are also formatted for humans rather than machines: merged title cells, blank spacer rows, subtotals in the middle of the data, a legend at the bottom. Every one of those is invisible to a reader and a problem for a loader, which is why a minute of tidying pays for itself.
Use this when someone sends you a workbook and the question is analytical: totals by category, rows in one sheet missing from another, the top twenty of something. SQL answers those in a line.
Preparing the workbook
- Put the header row at the top of the sheet — column names come from it.
- Remove decorative rows above the header (titles, logos, merged banner cells); they confuse column detection.
- Delete subtotal and grand-total rows inside the data, or they will be counted as records.
- Values are read as stored, so a column formatted as a date but holding text will arrive as text.
- Formula results are read, not the formulas themselves.
- The workbook is opened read-only — AddisDB never writes back to it.
Open it in AddisDB
- New Connection → Files → Common → Excel (XLSX).
- Choose the workbook, name the connection, and Save.
The questions worth asking in SQL
Duplicate detection and cross-sheet reconciliation are the two that a spreadsheet makes tedious and SQL makes trivial.
-- Which keys appear more than once?
SELECT invoice_no, count(*) AS n
FROM invoices
GROUP BY invoice_no
HAVING count(*) > 1
ORDER BY n DESC;
Numbers that arrived as text — because of a currency symbol, a thousands separator or a stray space — are fixed in the query rather than in the workbook, which keeps the original untouched.
SELECT sum(TRY_CAST(replace(replace(amount, '#39;, ''), ',', '') AS DOUBLE)) AS total
FROM invoices;
What AddisDB gives you
- SQL over the sheet — grouping, filtering and joining against other connections’ data.
- The Chart view, so a total by category becomes a chart without building a pivot table.
- Notebooks for an analysis you will want to re-read or hand to someone.
- AI chat grounded in the workbook’s real columns.
- ⌘K search across every connection, and a workbook that is never written back to.