Start with a copy and a count
Keep the original database and work from an unlocked copy. Before conversion, record the user-table names and record counts in Access. The package lists local-table counts and checks readable rows against the catalog; this catches omissions but does not establish that every value has the intended meaning.
Open data.xlsx and inspect _Schema, _Issues and _Relations before importing it into another system. An empty table is still a table with a field definition, so do not discard its header simply because it has no records.
Keep exact values as text until you choose a target type
Excel numeric cells carry about 15 significant decimal digits. A 20-digit identifier, a large fixed-decimal amount or a BigInt can therefore change if treated as a number. This exporter writes currency, numeric/decimal and BigInt as strings in XLSX and JSON. Decide the target decimal precision and scale during the destination import.
Date columns are exported as timezone-naive text. Access commonly stores a local date/time without a timezone. Do not append Z or convert to UTC unless you know the source convention. Check old dates, times without a calendar date and extended precision separately.
Use JSON when distinctions matter
CSV cannot preserve a difference between an empty string and NULL here; both become empty fields. The typed JSON preserves null. Unread fields are distinct $unread objects rather than guessed empty values. Treat those markers as work still to do.
For memos longer than Excel’s cell limit, use the full JSON/CSV value or reconstruct _LongText chunks in order. The original memo is not silently truncated to fit a worksheet cell.