SYLK to CSV — reading statements instead of a sheet
Files ending in .slk come from spreadsheet software of the 1980s, and the name is misleading: SYLK is not a link. It is a line-oriented statement file, where each line declares something — a cell, a column, a style. Recovery means reading the statements that carry data and ignoring the ones that do not.
Cell formatting, colours, column widths and merged ranges are dropped; only stored values survive.
Processed on your device. Files aren’t sent anywhere.
SYLK is a list of statements
There is no grid in the file. Rows and columns are addressed by statements, and the reader reconstructs positions from those addresses.
| Statement | Purpose in the file | In the CSV |
|---|---|---|
| ID | identifies the file | nothing |
| COL | describes a column | nothing |
| CELL | holds a value | a field in a row |
| STYLE | describes presentation | nothing |
| DIST | describes a distance | nothing |
Style statements are read and discarded
A style statement is parsed so the file can be understood, then dropped: CSV has no presentation layer. A header that was bold in the original produces the same plain text as any other cell.
Questions
Is SYLK a link to another file?
Does bold formatting survive?
Why did an accented character change?
Are formulas present in SYLK?
Cells become rows
Cell values are placed at the row and column they addressed, so the row shape comes from the addresses rather than from the order the lines appeared.
- A cell with no address data is skipped.
- Empty positions stay empty, so columns keep their alignment.
- Trailing blanks at the end of a row are trimmed.
- Values are written as text because CSV has no types.
Bytes, not code points
SYLK stores bytes under a single-byte codepage. The reader decodes the file as UTF-8, and there is no codepage metadata in the file, so accented characters can arrive replaced. Names and descriptions are the fields to compare against the original.
When a label looks damaged
Inspect a name or label that you can compare with a trusted reference. An apparently successful export can carry a misread character into every downstream system. Recover the intended text before relying on the extracted rows; saving the same mistaken characters in UTF-8 does not reconstruct the original label. Keep the legacy file for that investigation.
Checking the recovered CSV
The output is UTF-8 with a byte order mark and CRLF line endings, so spreadsheet software reads it correctly.
- Convert the .slk file and download the CSV.
- Open it in a text editor so nothing is retyped.
- Count the rows against the cells you expected.
- Compare accented text with the original file.
- Convert numeric columns to numbers before importing.