Messy spreadsheets

Import the file you have, not the file the importer wants

A report with a title above the header. Subtotals and a grand total. A company name on its first row only. A workbook with six sheets. An import that expects one tidy table per file cannot take any of these as they are. Sloose reads the file as it is, and shows you the rows it will import before anything is written.

Start freeSee the example files

Formatting CSV files for import: title rows and totals rows

This sales report was made for people to read. It has a title and a date above the column names, the region only on its first row, a subtotal under each region, a grand total and a footnote.

02-regional-sales-report-title-and-totals.csv
ABCDE
1Regional Sales Report — Q3 2026
2Generated 01/10/2026 by Reporting
3
4RegionAccountAccount managerOrdersRevenue
5NorthCopperleaf StudioJordan Avery14$21,340.00
6Ironbark & Finch BuildersJordan Avery9$58,900.00
7Harbourline FreightMei Tanaka22$34,115.50
8Subtotal North45$114,355.50
9SouthWillowmere Dental GroupRavi Patel6$7,800.00
10Bluegum PhysioRavi Patel11$12,045.00
11Subtotal South17$19,845.00
12Grand total62$134,200.50
13* Revenue excludes GST. Internal use only.
A title and a blank row above the header, the region only on its first row, subtotal and grand-total rows, a footnote.Download the sample CSV

The header row

In an .xlsx, Sloose finds the header row by itself when a title sits above it, and shows which row it chose, numbered as Excel numbers rows. You can type another. It only skips a row that is nearly empty next to the rows below it, so a header with one blank column name is kept.

A recipe you can read

For a CSV or pasted text, ask the assistant on Source, for example "Is anything wrong with this file?". It can answer with a recipe:

  1. Use row 4 as the header
  2. Leave out the subtotal, grand total and footnote rows
  3. Fill down Region

Each step is one of a few named operations: use a row as the header, name the columns of a file that has none, leave out rows, rename or remove a column, and fill down. A recipe changes the file's shape. It never rewrites a value that is there. Nothing changes until you press Use this.

Sloose reshaping a sales report: a list of steps such as "use row 3 as the header" and "fill down Region", with a preview of the result.
A report with a title, subtotals and a grand total, turned into rows by a recipe you can read.

Or a row filter

With the header in place, a row filter leaves out every row that names no account: the subtotals, the grand total and the footnote.

row.Account !== ''

The rows it holds back are counted as filtered, and the foot of the page counts the rows that will import.

Next month's report

A template keeps the reshape recipe and the row filter, so next month's report is reshaped the same way as it arrives, free, and its totals rows are left out too. If the new report no longer fits the recipe, it loads as read and says why, and asking the Source assistant again uses AI credits. In an .xlsx, the header row is found again by itself.

Grouped layouts: the company once, the people under it

A directory like this one names each company once and lists its branches and people under it. Exported from a merged cell, every row but the first is blank in that column.

10-branch-directory-grouped-layout.csv
ABCDEF
1CompanyBranchContactRoleDirect lineEmail
2Harbourline FreightHead officeMei TanakaAccount Manager(08) 5550 4403mei@harbourline.example
3Dev SharmaDispatch(08) 5550 4404dev@harbourline.example
4Port depotOlivia BrooksDepot Lead(08) 5550 4410olivia@harbourline.example
5(vacant)Night shift
6Willowmere Dental GroupHobartSiobhan McAllister-HartPractice Manager(03) 7010 5501siobhan@willowmere.example
7LauncestonBen DuartePractice Manager(03) 7010 5502ben@willowmere.example
8Kate DuarteReception(03) 7010 5503
The company once, its branches and people under it, a vacant row.Download the sample CSV

A mapping formula reads one row at a time, so it cannot see the row above. Fill downcan: it carries the last value down into the blank cells under it. Fill down Company and Branch, and every person has both.

Then a row filter leaves out the vacant position:

row.Contact !== '(vacant)'

Fill down only what is grouped

Kate Duarte, on row 8, has no email. Fill down the Email column too and she gets Ben Duarte's address. Each recipe step names its column, so you can see which columns it fills.

Import Excel into your CRM without saving as CSV

Converting a workbook to CSV is an extra step, and every trip through a spreadsheet is a chance for a value to change. Sloose reads the .xlsx itself.

Text stays text

A cell stored as text keeps its leading zeros: 00123 arrives as 00123.

Dates arrive as dates

A cell stored as a date arrives as 2026-10-15, whatever the sheet displayed. That form means the same day in Sydney, London and New York.

Numbers without their formatting

A cell displayed as $1,234,567.50 arrives as 1234567.5, which a currency field accepts.

Formulas give their saved value

A formula cell gives the value Excel last saved, which is usually the number you last saw.

.xls (the pre-2007 format) and .ods cannot be read. Open either and save it as.xlsx.

Import Excel with multiple sheets

Upload a workbook and every worksheet is listed with its size. Click a sheet to look at it, as it would be read, without changing the import. Tick the ones you want.

  • Each ticked sheet becomes its own file in the import, with its own columns, cleaning and mapping.
  • All of them are imported in one run, in the order their links need.
  • A sheet that cannot be read fails on its own and is named. The other sheets still load.
  • A workbook with one sheet loads as it arrives, with nothing to tick.

Sheets that refer to each other, such as organisations on one sheet and people on another, link by value.More than one file, in the docs, shows how.

Choosing which worksheets of an Excel workbook to import, each listed with its size.
Every worksheet in a workbook: tick the ones you want, and each becomes its own source.

CSV, tab-separated, or pasted straight in

The delimiter is worked out

Sloose detects the delimiter and shows what it found, so you can change it. Comma, tab, semicolon, pipe and space are offered, which covers a European CSV that uses semicolons.

Paste text

Copy rows from anywhere and paste them in. Two pasted extracts make an import of two files.

Clean up without touching your file

Sloose counts duplicate rows and names them. Leave a row out, or edit a cell, and the change belongs to this import. Your original file is untouched.

If you edit the same problem in twenty rows, it is a mapping problem: one formula fixes every row. SeeAI mapping.

Questions people ask

Do I have to save my Excel file as CSV first?

No. Sloose reads .xlsx workbooks directly, every sheet in them. The older .xls format and .ods cannot be read: open the file and save it as .xlsx, and Sloose says so by name.

Can I import an Excel file with several sheets?

Yes. Tick the sheets you want. Each one becomes its own file in the import, with its own columns, cleaning and mapping, and all of them are imported in one run.

My report has a title above the column names. What do I do?

In an .xlsx, nothing: Sloose finds the header row by itself and shows which row it chose, and you can type another. In a CSV, ask the assistant on Source, which can answer with a recipe that starts "use row 4 as the header".

Is the clean-up remembered for next month?

Yes. The reshape recipe and the row filter are both saved with a template. Next month's file is reshaped the same way as it arrives, before anything else and with no AI credits, with Undo to load it as read instead. If the file no longer fits the recipe, say a title row has moved or a column it names has gone, none of the reshape is done: the file loads as read and says why, and asking the assistant again uses AI credits. An answer that proposes nothing you can use costs none.

Does Sloose change my file?

No. Edits, excluded rows and filters belong to the import. Your original file is untouched.

Bring the messy one

Start on the free plan with the file you actually have. Nothing is written until you run it.

Start freeSee the examples