Sample Excel Files & Test Fixtures
Free, license-clean workbooks for testing viewers, converters, protection handling, and spreadsheet pipelines. Every file is CC0, generated by a committed script, verified by automated tests, and published with its SHA-256 checksum.
General-purpose viewer samples
Two worksheets, SUM/variance formulas with cached values, typed columns. General-purpose sample for viewers, converters, and the compare tool.
- /excel-viewer:
- Opens with two sheet tabs; formula cells show their last calculated value.
- /excel-to-csv:
- Exports either worksheet to CSV with all rows intact.
- /excel-compare:
- Use as the 'before' file against an edited copy to see cell-level differences.
sha256: f3dd62ebfc8a0c33…Merged title/header ranges, a frozen top row, currency/percent/date number formats, and custom column widths - exercises exactly the metadata a data-view renderer keeps or drops.
- /excel-viewer:
- Merged ranges render as merged cells, columns keep their relative widths, and formatted numbers display as $1,234.00 / 34.2% / 2026-07-17.
- /excel-to-html:
- Merged ranges become colspan/rowspan in the exported table.
sha256: e34069ed20f69d66…Compare & cleanup samples
An edited copy of sample-budget.xlsx: changed amounts on both sheets, one renamed description, and one added transaction. Pairs with the original for diff/compare demos.
- /excel-compare:
- Against sample-budget.xlsx it reports the changed cells on Summary and Transactions plus the added Pharmacy row.
sha256: 509cde9db4b98b81…A contact list with exact duplicates, case-variant duplicates, stray whitespace, inconsistent casing, and blank rows - the classic cleanup workload.
- /excel-data-cleaner:
- Trim, case normalization, and blank-row removal produce a clean list.
- /remove-duplicates-excel:
- Dedupe on Email with trim and case-insensitive matching removes the duplicate rows.
sha256: 8999fead17b1d52c…Protection fixtures
Both fixtures use the intentionally public password excel123 so protection can be applied, verified, and removed in tests. Sheet and workbook protection are editing locks with a legacy 16-bit hash - not encryption - which is why they can be removed without the password.
Worksheet protection (<sheetProtection> with the legacy 16-bit password hash) on both sheets. The cells are locked against editing but the data is fully readable.
- /excel-password-remover:
- Reports both sheets as protected and returns an unlocked copy without needing the password.
- /excel-viewer:
- Opens normally - sheet protection restricts editing, not reading.
sha256: d316e86570df5704…Workbook structure protection (<workbookProtection lockStructure="1">). Sheets cannot be added, deleted, renamed, moved, or unhidden in Excel until it is removed.
- /excel-password-remover:
- Detects workbook protection and returns a copy with the structure unlocked.
- /excel-viewer:
- Opens normally - structure protection does not restrict reading.
sha256: 8d40b58fa2604a44…Macro-extension fixture
A .xlsm package with NO VBA project inside: the macro-enabled extension and content type without any macro code. Shows that the extension alone doesn't mean a file contains macros - and is safe to hand to any macro-handling tool.
- /xlsm-viewer:
- Opens like any workbook; there are no macros to (not) run.
- /excel-macro-remover:
- Reports no VBA project to remove.
sha256: 6f217a93840f139f…Why there is no encrypted sample file
Excel has three unrelated locking mechanisms, and only two of them appear in this lab:
- Worksheet protection (
<sheetProtection>) locks cells within a sheet against editing. The password is stored as a legacy 16-bit hash in the sheet XML. - Workbook structure protection (
<workbookProtection>) stops sheets being added, deleted, renamed, moved, or unhidden. Same hash scheme, stored inxl/workbook.xml. - File-open encryption (“Encrypt with Password”) is real cryptography: the entire package is encrypted with AES per Microsoft's MS-OFFCRYPTO Agile Encryption specification. Without the password the content is unrecoverable.
An encrypted fixture with a published password would demonstrate nothing that the protection fixtures don't already show, and one without a password would just be noise. If you need an encrypted test file, make one in seconds: open any fixture in desktop Excel and choose File → Info → Protect Workbook → Encrypt with Password.
How protection is stored in the file format
An .xlsx or .xlsm file is a ZIP package of XML parts defined by ECMA-376 (Office Open XML). Worksheet protection is a single self-closing element inside the worksheet part, and workbook protection is its sibling in the workbook part. You can see this yourself: rename a protected fixture to .zip, open xl/worksheets/sheet1.xml, and find the <sheetProtection> record. File-open encryption is different: it wraps the whole package in a CFB container per MS-OFFCRYPTO, so there is no readable XML until the file is decrypted. Microsoft's own protection and security guidance draws the same line: worksheet protection is not a security feature, encryption is.
Verifying downloads
The canonical checksums live in manifest.json alongside the files. After downloading, compare:
# macOS / Linux
shasum -a 256 sample-budget.xlsx
# Windows
CertUtil -hashfile sample-budget.xlsx SHA256Link to this lab
Teaching spreadsheet skills, writing documentation, or building a test suite? Link here so your readers always get the current, checksummed files. Copy-ready snippets:
[Sample Excel files & protection test fixtures](https://www.exceltool.io/sample-excel-files) - CC0 workbooks with published SHA-256 checksums (protected, merged/formatted, and macro-extension samples).<a href="https://www.exceltool.io/sample-excel-files">Sample Excel files & protection test fixtures</a> - CC0 workbooks with published SHA-256 checksums.Frequently Asked Questions
Related Tools
Excel Viewer
Open any fixture and inspect it in your browser
Excel Password Remover
Unlock the protected fixtures without the password
Excel Compare
Diff an edited copy against the original sample
Corrupt Excel Repair
Recover data from workbooks that won't open
Random Data Generator
Need bigger test data? Generate your own