DashConvert
4 min read

XLS to XLSX: why your old Excel files break in modern tools (and how to fix them)

You inherit a shared drive full of .xls files from 2008. Half of them refuse to open in Excel 365 or Google Sheets. Here's what changed, and how to convert them without losing formulas.

The two "Excel formats" and why it matters

.xls is the old binary Excel format that shipped with Excel 97 through 2003. .xlsx is the modern XML-based format that replaced it starting with Excel 2007. They look identical when you open them; internally they're completely different files.

Modern Excel, Google Sheets, LibreOffice, Numbers, and every scripting library (openpyxl, xlrd, SheetJS) prefer .xlsx. Support for .xls is being deprecated one tool at a time โ€” Python's xlrd dropped .xlsx support years ago and now only handles .xls, while pandas moved to openpyxl which only handles .xlsx. It's an active mess and the direction is clear: .xls is fading.

Threads on r/excel and r/datascience regularly feature "can't open this .xls" or "python won't read this file" โ€” usually the fix is to convert first.

Why old .xls files fail to open

Three specific reasons a legitimate .xls can refuse to open in a modern tool:

  1. File was actually an .html spreadsheet renamed to .xls. A trick some old export tools used. Newer Excel refuses to open it.
  2. Password-protected with the old weak encryption. Modern Excel opens with the password; automation libraries often can't handle the old crypto.
  3. File corruption from being emailed through old mail servers that stripped the binary structure. Real problem in enterprise archives.

For all three, converting to .xlsx (via a tool that can actually read the old file) is the recovery path.

The one-line answer

Drop the .xls into XLS to XLSX. Formulas, formatting, multiple sheets, cell types โ€” all preserved and re-encoded to the modern format. Output opens in Excel 365, Google Sheets, Numbers, and every modern library.

What survives the conversion

Preserved cleanly:

  • All cell values.
  • All formulas (as long as the functions exist in modern Excel โ€” 99% do).
  • Cell formatting (colors, fonts, borders, number formats).
  • Multiple sheets.
  • Merged cells.
  • Named ranges.

Preserved usually:

  • Charts โ€” most convert cleanly. Complex 3D or specialty charts sometimes render slightly differently.
  • Conditional formatting โ€” usually. Old rule syntax occasionally doesn't map.
  • Pivot tables โ€” usually. Very complex pivot configurations occasionally simplify.

Lost:

  • Macros (.xls with VBA). .xlsx doesn't support macros โ€” you need .xlsm for that. If the file has macros, the converter should offer .xlsm as an output option, or you save as .xlsx and lose the macros knowingly.
  • Old ActiveX controls. Legacy form buttons and dropdowns often don't survive. Rebuild with modern form controls.
  • Very old chart types (like Excel 97's radar variants) may substitute a similar modern chart.

When to convert

  • You inherited an archive of old .xls files. Batch convert to .xlsx once. Modern tools are the future; you'll thank yourself.
  • A colleague sends you .xls. Convert to work with it. Politely mention that .xlsx is standard now.
  • A Python/R/SheetJS script fails to read .xls. Convert first, then re-run.
  • Google Sheets refuses to import. Convert, then upload.

When not to convert

  • The file is a legal or compliance archive. Original format may be part of chain-of-custody. Keep the original; convert a copy for working use.
  • The file has macros you need. Save as .xlsm not .xlsx, or use .xlsb (binary macro-enabled) if size is a concern.

Alternative: skip Excel formats entirely

If your goal is to feed the data to another system, converting to CSV or JSON is often a better destination than .xlsx:

  • To CSV: Excel to CSV. One sheet per file, universal compatibility.
  • To JSON: CSV to JSON after CSV export. Ready for any API.

For humans opening in a spreadsheet, stick with .xlsx. For code consuming the data, CSV or JSON is usually better.

Common failure modes

  • "Converted file opens but every cell shows #REF!." Formulas reference sheets or cells that didn't survive the conversion. Common with cross-workbook references. Fix: rebuild formulas.
  • "Numbers formatted as dates now." Excel's date auto-detect. Format cells explicitly as Number or Text after conversion.
  • "File is much bigger than the original." .xlsx uses XML internally which is verbose; a 200 KB .xls can be 500 KB .xlsx. Normal. Compression by the format itself keeps it manageable.
  • "Colors look wrong." .xls used a 56-color palette; .xlsx supports full 24-bit color. Sometimes colors shift slightly during conversion. Cosmetic only.

The privacy piece

Legacy .xls files sitting in shared drives often contain the most sensitive data in a company โ€” old customer lists, historical financials, HR records from before modern data governance. Uploading them to a random online converter is a data-leak waiting to happen. XLS to XLSX runs in your browser; the file stays on your machine, and the output stays on your machine too.

Tools mentioned in this post