Excelでファイル保存する際、
「ファイルの種類(T):」の中に「SYLK(*.slk)」という選択肢がある。
こちらでファイルを保存すると「SLK(シルク)ファイル」が作成できる。
slkファイルが優秀そうだと感じたので、まとめてみた。
###SLKファイルとは何か
SYLKとは、表計算ソフトやデータベースソフトで扱うデータ形式のことである。
SYLKは、MicrosoftがExcelを発売する前に開発・発売していた表計算ソフトの Multiplan で導入された形式で、Excelはもちろん、他の表計算ソフトでもSYLK形式を使えるようになっていることが多いファイル形式となっている。ASCIIコード(漢字はシフトJIS)だけで構成されるテキスト形式だが、セル位置や、データが数字か文字かを示す情報などを記録しているので、少々冗長だが確実にデータを交換することが可能である。
###CSVとの比較
それぞれのファイルをExcelで開いたときの挙動は以下の例のようになる。
以下に書く形式は開いたときに表示してほしい形式で、
CSVは開くときの指定をすべて「標準」としているとする。
| 記述文字(形式) | CSV | slk |
| :---: | :---: | :---: | :---: | :---: |
| 0014(文字) | 14 | 0014 |
| 2021/08/01(日付) | 8月1日
(2021/08/01) | 2021/08/01 |
| 8-1(文字) | 8月1日
(2021/08/01) | 8-1 |
| 8/1(文字) | 8月1日
(2021/08/01) | 8/1 |
※csvをExcelで開いたときの表示形式の設定によって変わるが、
関数フィールドに入っているのは()内
CSVではセル内に入れる文字の形式を指定しないと、勝手に型変換を行なってしまい、ほしい要素が違う値に変化してしまいがちになる。
一方、slkファイルはデータの型をすべて記録して出力されるので、Excel側で勝手に変更されることがない。
###これなら、CSVを使うより、slkを使うほうがよさそう?
でも、slkはそんなに浸透していない…
これなら、CSVを使うより、slkを使うほうがよさそうに見えるが、slkは以下の欠点がある。
- データの中身(型)をすべて記録しているので、その分ファイル自体がCSVより2倍くらい重い
- slkファイルをメモ帳等で確認するとわかるが、本データの前にフォントや表示設定のデータが記述されている
- Excel発売前に導入された形式のため、互換性がなくなる可能性がある
- __文字コードがShift-JISのみ__のため、文字化けを起こしやすい
- 「ñ」「ç」のような特殊文字はもちろん非対応
###結論:そう簡単ではなかった
slkファイルは、データ型保持がある点でCSVより魅力的に感じるが、文字コードがShift-JISのみというのが致命的で、UTF-8だとまず間違いなく文字化けるのがものすごく難点。
Excel も後方互換のために対応できるようにしているような気がする…
slkファイルの上位互換(UTF対応)形式ができるといいな…
###参考
SYLKとは何? Weblio辞書