Guide · Excel sheets
Compare two Excel sheets by saving them as CSV
CSV Compare reads CSV and TSV text files. It does not open Excel workbooks (.xlsx or .xls): if you select one, the app asks you to export the worksheet as CSV UTF-8 first. Saving a sheet as CSV takes a minute, and a few format checks beforehand prevent most false differences.
Try the free demo ↗ See licenses and prices ↗
Les denne veiledningen på norsk
Not .xlsx or .xls
2 MiB per file
2 MiB per file
1. Prepare both sheets
- Put the column headers in row 1. Delete title rows, notes and empty rows above the table. The app reads the first row as the header, and every row must have the same number of columns.
- Remove total and subtotal rows. Otherwise they are compared as if they were records.
- Fill every ID cell. A row without a record ID is reported as invalid, and while such a row exists the app will not conclude that a record is missing from that file.
- Give every column a unique header. Merged header cells leave empty headers, and the app rejects both empty and duplicate column names.
- Cover the same records. Use the same period and filters in both sheets.
2. Fix the formats that travel into the CSV file
Excel saves values as they are displayed in the cells, so a cell’s number format ends up in the CSV file.
- Amounts. Format amount columns as Number without the 1000 separator, or as General. A value saved as
1,250.00orkr 1 250,00keeps its separator or symbol, and CSV Compare reports that row as invalid. - IDs with leading zeros. If an ID column is stored as numbers,
00125has already become125. IDs must match exactly, so those two never pair up. Keep ID columns as text in both sheets, or export them again from the source system. - Long numbers. Excel keeps 15 significant digits. Longer numeric IDs can lose their last digits and may be saved in scientific notation, such as
1.23457E+15. Store such columns as text. - Dates you compare as text. Both files must use the same date format:
01.02.2026and2026-02-01are different text. - Hidden and filtered rows. A filter only hides rows, and they are still written to the CSV file. Copy the visible rows to a new sheet if you want to leave the others out.
- Formulas. The CSV file stores the calculated values, not the formulas.
3. Save each sheet as CSV UTF-8
- Excel: select the sheet, then choose File → Save As (or Save a Copy) and the file type CSV UTF-8 (Comma delimited) (*.csv). Excel saves only the active sheet, so repeat this for the second sheet. Keep the .xlsx file as your original.
- Google Sheets: File → Download → Comma-separated values (.csv). This downloads the sheet you have open.
- LibreOffice Calc: File → Save As, choose Text CSV (.csv), then set the character set to Unicode (UTF-8) in the export options.
In regions that use a decimal comma, Excel often writes semicolons between columns even when the file type says “Comma delimited”. CSV Compare reads both: check the suggested delimiter and choose the matching decimal separator for each file.
4. Compare the two files
Open the demo, choose the two CSV files and check the five-row previews. Confirm the delimiter and decimal separator for each file, map the record ID on both sides, add the amount, currency or text fields you want to check, and choose Compare exports. The steps are described in more detail in how to compare two CSV files.
Example: what a format slip looks like
Two price lists were saved from Excel. In the left sheet, one price cell kept its thousands separator. In the right sheet, the product numbers were stored as numbers, so Excel dropped their leading zeros.
| product_id | price |
|---|---|
| 00125 | 1250.00 |
| 00126 | 1,490.00 |
| 00127 | 320.00 |
| product_id | price |
|---|---|
| 125 | 1250.00 |
| 126 | 1490.00 |
| 127 | 345.00 |
With product_id mapped as the record key and price as the amount (comma delimiter, dot decimals), the comparison finds no matches and 6 review entries:
| Record ID | Report status | Cause |
|---|---|---|
| 00126 | Invalid left row | 1,490.00 contains a thousands separator, so it is not a valid amount. The row is excluded from matching. |
| 00125 | Only on left | The right file wrote this ID as 125. |
| 00127 | Only on left | The right file wrote this ID as 127. |
| 125 | Only on right | The same product as 00125, but IDs must match exactly. |
| 126 | Only on right | The same product as 00126. |
| 127 | Only on right | The same product as 00127. |
After the price column is formatted as Number without the 1000 separator and product_id is kept as text in both sheets, the same comparison reports 2 matches (00125 and 00126) and a single review entry: 00127, Amount differs, 320 → 345 (the report shows amounts without trailing zeros). That is the one real difference.
Copy the example as CSV text
Excel puts quotes around a value that contains a comma, as in the left file below. Paste each block into the left and right text boxes of the demo to reproduce the result.
product_id,price 00125,1250.00 00126,"1,490.00" 00127,320.00
product_id,price 125,1250.00 126,1490.00 127,345.00
Your files stay on your device
The comparison runs in your browser tab. While it reads and compares files, the app makes no network requests, saves no input to browser storage and contains no analytics. The demo page is delivered over the web like any other page, but your CSV contents are not sent anywhere. Downloaded reports contain your compared values, so store them as carefully as the source files. The full version is a ZIP file that you extract and open locally; it runs without a network connection.
Limits
- Free demo: up to 50 data rows and 2 MiB per file.
- Full version: up to 10,000 data rows and 2 MiB per file.
- Both: up to 100 columns per file and record IDs of up to 300 characters. The header row does not count as a data row.
- Not included: reading .xlsx or .xls files directly, fuzzy matching, currency conversion, combining split invoices and automatic accounting entries.
Related: compare two CSV files · reconcile order or invoice exports · format guide · see licenses and prices
Try it with two small sheets