Check a CSV export before sending it
Reimport the delivered file and verify identifiers, Unicode text and totals.
In this guide
A workbook that looks correct is not yet a verified CSV delivery. Export settings can change the active sheet, encoding, separators or displayed values. Check the actual output file through a fresh import rather than inspecting only the workbook you exported from.
Start with the practice input
Download export-input.csv. Use desktop Excel, an untouched input file, a working .xlsx workbook and a separately named delivery CSV. The input has headers in A1:C1 and three records in rows 2:4; columns are record_id, customer and amount. Import record_id as Text before loading, following the identifier guide if needed.
Suggested filenames are export-working.xlsx and export-delivery.csv. Keep them outside the original download location or use different names so a format warning cannot lead you to overwrite the practice input.
Define the receiving contract
For this exercise, the receiver expects UTF-8, comma delimiters, one header row and three fields in this order: record_id, customer and amount. Identifiers are exact text, and amounts use a period decimal separator with two decimal places. The file contains three fictional customers, including accented and Chinese text.
The sample includes IDs 00127, 00008 and 123456789012345678. Import these as Text before doing any work. Once a long identifier has been rounded by a numeric conversion, exporting it as text will not restore the lost digits.
Save a separate delivery copy
- Keep the working workbook in its native format. Put the agreed output table on a clearly named sheet, with only the required header and data rows.
- Select the amount cells and set a number format with two decimal places and no grouping separator. Set the decimal-place count explicitly to 2 in the number-format settings. The number of Increase Decimal clicks depends on the starting format. Confirm that C2:C4 display 12.50, 7.50 and -2.00 before export.
- Verify that this sheet is active. Export a separate CSV using the required encoding, choosing CSV UTF-8 where the Excel version offers it.
- Read any format warnings. CSV represents a single flat table and does not preserve a workbook's multiple sheets, styles or formula definitions.
- Close the exported CSV view after saving it, keeping the .xlsx working copy. Import the newly exported file into a fresh workbook with explicit encoding, delimiter and Text type for record_id.
- Compare that fresh import with the original source and the contract below. A second double-click that repeats the same automatic conversions is a weaker check.
Do not send the working workbook renamed with a .csv extension. Changing a filename does not change the file format. If the receiver requires a BOM-free UTF-8 file, verify the exported bytes or use a compatible exporter; the practice input itself uses a UTF-8 BOM.
Reimport settings matter
In our first fresh import, accepting the encoding field as displayed produced garbled customer names, even though the saved bytes were valid UTF-8. A new import with Unicode (UTF-8) explicitly selected from the dropdown preserved José, 李明 and Zoë. Check the actual loaded strings; a visible encoding label alone is not proof of a correct result.
Our tested Mac route was File → Import → CSV file. We explicitly selected Unicode (UTF-8), used Comma with Tab cleared and double-quote qualification, and set the first column to Text before finishing. The amount column loaded as numeric values, so 12.50 could display as 12.5 again; the two-decimal representation was separately checked in the exported text.
Reproduce the failed name check
Download the CSV actually saved by Excel for Mac. Import it into a fresh workbook using the settings above. Leave A1:C4 as loaded. Put the following formula in F4 on the verification sheet, outside the delivery table.
=AND(EXACT(B2,"José"),EXACT(B3,"李明"),EXACT(B4,"Zoë"))
On November 12 we read the formulas and their saved results from both September 30 test workbooks. The first import passed the amount and ID checks. Only the name check failed. Explicitly selecting UTF-8 on the second import of the same file changed that result.
| Worksheet check | First import | Fresh import with UTF-8 selected |
|---|---|---|
| F2: first ID is text and both short IDs match | TRUE | TRUE |
| F3: long ID is text and all 18 digits match | TRUE | TRUE |
| F4: all three names match exactly | FALSE | TRUE |
| F5: sum of the three amounts | 18 | 18 |
| F6: three numeric cells with values 12.5, 7.5 and -2 | TRUE | TRUE |
If F4 returns FALSE, test each EXACT comparison in a separate cell to locate the affected names. Reopen the same delivery file through the import dialog and inspect the names in the preview before loading. If the verified download passes but your own export still fails with identical settings, inspect the customer cells in your working workbook before exporting again. Keep the verification formulas in the workbook so that a subsequent CSV delivery still contains only the three agreed columns.
The saved worksheet formulas and results include the hash of the exported CSV. Excel can display 12.5 after it reads an amount as a number. To check a two-decimal delivery requirement, open the CSV in a text editor and inspect the amount strings: 12.50, 7.50 and -2.00.
Stop when a check fails
| Failed check | Likely area to inspect | Safe next action |
|---|---|---|
| IDs lost zeros or ending digits | Numeric conversion during import | Reimport the original source with record_id as Text |
| Names are garbled | Encoding selection during export or reimport | Explicitly reselect UTF-8 and compare all three names |
| Total differs from 18 | Missing rows, sign changes or amounts imported as text | Check all three amounts and confirm three numeric values |
| Extra or missing fields | Wrong active sheet, range or delimiter | Inspect the delivery file and export the intended three-column table again |
Keep a failed delivery separate until the cause is understood. A matching total cannot compensate for a changed identifier.
Separate a successful save from an accepted delivery
Keep the workbook and untouched source until the recipient confirms the delivery. A successful CSV save proves that a file was written; the fresh-import checks establish whether its values satisfy this particular contract. If the recipient reports a different row count, first compare filenames, export filters and header handling. Do not send a succession of unlabelled replacement files: identify which version supersedes which and retain the failed check in your handoff note.
Record a small handoff note
Include the filename, intended recipient schema, encoding, delimiter, row count, total and generation date. Record any missing or rejected records separately. For recurring deliveries, a file hash helps confirm that the recipient received the same bytes you checked; a hash does not prove the data itself is correct.
The downloadable practice pack includes a manifest of fixture row counts, column counts and SHA-256 hashes. Those hashes describe the original practice files, not an export produced by your Excel version. A different quoting style or line ending can change a hash while leaving the logical table equivalent.
Reference
When delivery must account for a reference list, compare identifiers in both directions. Matching row counts alone do not prove that the same records survived.
Microsoft lists the workbook features lost in text formats in Formatting and features not transferred.
Verification scope
On September 30, 2026, Excel for Mac 16.112.2 imported export-input.csv with record_id as Text, saved a separate .xlsx working copy, and exported CSV UTF-8 with two decimal places. We closed the CSV view and imported the actual exported file into a fresh workbook. EXACT and ISTEXT checks confirmed the IDs, EXACT confirmed all three customer strings, and SUM returned 18 with three numeric amounts. Independent byte checks confirmed UTF-8 with BOM, comma separators, and amounts 12.50, 7.50 and -2.00. The output used CRLF record separators and no final newline. This observation covers this Mac path and sample, not every exporter or receiver.