XLS

XLSファイルとは

Excel の古いバイナリ形式で、65,536 行の上限があります。

XLS とは何か

XLS はバイナリ形式です。これを知っているプログラムにしか意味を持ちません。 編集のために使われます。

拡張子は .xls、正式名称は Excel 97-2003 Workbook です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。

XLS はどこから来たのか

Microsoft が 1987 年に公開しました。

これだけ長く読まれ続けてきた形式なら、10 年後に取り出したいものを預けても大丈夫です。

仕様は公開されていますが、公開しているのはそれを所有する会社です

文書があり、それに沿って実装できます。それでも、次の版がどうなるかを決めるのはその会社です。実務上、ファイルが開き続けるにはこれで足ります。安心するには足りません。

古い形式です

今もどこでも開けますし、古いプログラムは今もこれを書き出します。ただ、この形式のまわりで新しいものは何も作られていません。残しておきたいものは移してください。そして今日始める仕事には、これを選ばないでください。

1 つのファイルに複数ページを持てます

XLS ファイルは 1 ページに縛られていません。1 ページしか持てないものへ変換するときには、これが効いてきます。1 回の変換で出てくるのは 1 ページぶんのファイル 1 つで、取られるのは先頭のページです——どのページを取るかを選ばせてくれる変換であれば、そのページになります。

どんな種類の文書か

XLS の中身は表計算です。セルと数式、そしてそれを囲むシートでできています。

これが変換のされ方を決めます。表計算は印刷の領域になり、列をどこで折るかは誰かが決めなければなりません。

XLS を開けるのは何か

Microsoft ExcelとLibreOffice Calcが読めますし、同じ種類のプログラムならたいてい読めます。

ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。

ブラウザーで開く

これを読めるブラウザーはありません。

これを変換するいちばんよくある理由がこれです。形式が悪いのではありません。ファイルを見せたい場所が、それを読めないというだけのことです。

作業のための形式です

XLS は、開いて手を入れるために作られています。作業が続いているあいだはこの形式でファイルを持ち、完成したものが必要になるたびに、ここから書き出してください。

この十年、誰もわざわざ作らなくなったファイル

Excel は 2003 年まで XLS を書いていて、2007 年以降は既定で XLSX を書いています。だからこの拡張子を持つファイルは、ほぼ確実に受け継いだものです。使っている人たちが着任する前から回っている部門のワークブック、取引先からのテンプレート、十五年間更新されていないソフトウェアからのエクスポート。

内側にあるのは Microsoft の複合ファイルです。バイナリのストリームを小さく構造化して詰め込んだもので、古い .doc や .ppt と同じ技術です。この形式が現代の後継のように公開された標準だったことは一度もなく、仕様は Microsoft が文書化するまで何年もリバースエンジニアリングされ続けていました。この歴史が、非 Microsoft 系のソフトウェアが常にこれを少しずつ違う読み方をしてきた理由です。

65,536行の壁

これが、受け継いだ XLS を単なる不便からトラブルへと変える上限です。一つのワークシートは最大 65,536 行、256 列しか持てません。XLSX はそれを、行はおよそ百万強、列は 16,384 まで引き上げました。

危険なのは失敗の仕方です。8 万行のデータエクスポートを XLS のワークシートに取り込んでも Excel は拒否しません。最初の 65,536 行を取り込み、クリックで通り過ぎてしまえるダイアログで警告するだけです。ワークブックはそれで完成しているように見え、実際には完成していません。組織のどこかの処理がまだ XLS を通しているなら、これはすでに少なくとも一度は起きているはずです。

マクロと、拡張子が何も教えてくれない理由

XLS は VBA マクロを含められますが、それを含んでいるかどうかを拡張子は何も教えてくれません。まさにこれが現代の形式が直したことです。XLSX はマクロをまったく含められず、それが必要なワークブックは自ら名乗る XLSM でなければなりません。

マクロ入りのスプレッドシートは史上もっとも効果的なマルウェアの運び屋の一つで、いまも現れます。見知らぬ相手からメールで届いたワークブックには、現代の XLSX には向けない疑いを向けるべきです。XLSX や PDF への変換は、副産物としてマクロの中身を取り除きます。

ほかで開くと何が崩れるか

LibreOffice Calc、Google スプレッドシート、Numbers はどれも XLS を読めますが、どれも近似します。数値と数式の普通のシートは忠実に渡ります。ずれがちなのは古めかしい素材です。1990 年代のグラフエンジンで作られたグラフ、標準化される前の条件付き書式、ピボットテーブル、ActiveX コントロール、いまはもう存在しないアプリケーションからの埋め込みオブジェクト。

関連した落とし穴が日付システムです。その時代に Mac で作られたワークブックは 1900 年ではなく 1904 年を基準日にしていることがあり、その設定がうまく渡らないと、すべての日付が四年ずれて表示されます。まれではありますが混乱を招くもので、実際に起きるとまさにこう見えます。

XLSX への変換、それが正しい選択です

この変換は、ほとんど労力をかけずに大きな利益を得られます。XLSX が圧縮されているため、ファイルはたいてい半分以下になります。行と列の制限は消えます。リバースエンジニアリングされたバイナリではなく文書化された公開規格になるので、より多くのソフトウェアが読めるようになり、今後もそれは続きます。そしてマクロの中身はすべて消えます。

あとで確かめる価値があるのは狭い範囲です。グラフ、ピボットテーブル、埋め込みオブジェクトを使っている部分です。数式、書式、名前付き範囲、複数シートは確実に渡ります。古いワークブックのアーカイブをいま変換しておくほうが、あとで誰かが何も開けないと気づいてから一つずつ変換するよりはるかに安く済みます。

PDF のほうが良い行き先になるとき

ワークブックが完成しているときです。提出される会計、顧客への価格表、申請に添付する報告書。それらは再計算する必要がなく、PDF は相手が Excel を持っているかどうか、あなたの列幅が相手の環境でどうなるかという問いをすべて取り除きます。

まず先にやっておく価値があるのは、印刷範囲、向き、拡大縮小の設定です。スプレッドシートにはページというサイズがなく、PDF にはあります。印刷向けに一度も設定されなかったワークブックは、印刷向けに一度も設定されなかったワークブックとして変換され、列は勝手にほかのページへあふれ出します。

そこからデータを取り出す

行き先がデータベースやスクリプト、分析ツールなら、XLSX ではなく CSV に変換してください。取り込みルーチンが期待しているのはそれで、ストリーム処理でき、マクロや外部リンクを持てません。だからセキュリティに敏感なシステムは名指しでこれを求めます。

代償は、一つのシートの値以外のすべてです。ほかのシート、数式(結果だけは残ります)、書式、グラフ。データを移すにはこれが正しい取引で、ワークブックを保つには正しくありません。両方に変換しておくのが誠実な答えであることも多いです。CSV はパイプライン用、XLSX はファイル用に。

基本情報

XLSフォーマットの識別子と出自。
拡張子.xls
メディアタイプapplication/vnd.ms-excel
公開元Microsoft
初版1987

XLS ファイルについてよくある質問

Excel なしで XLS ファイルを開くには

LibreOffice Calc と Google スプレッドシートはどちらも読み込め、Mac の Numbers も取り込めます。どれも古めかしい素材 ── 1990 年代のグラフエンジン、ピボットテーブル、埋め込みオブジェクト ── を近似します。数値と数式の普通のシートは忠実に渡ります。

XLS と XLSX の違いは何ですか

XLS は 2007 年より前のバイナリ形式で、65,536 行、256 列に制限され、拡張子に何も表さずマクロを持てます。XLSX はおよそ百万行、16,384 列という制限を持つ XML の圧縮パッケージで、マクロはまったく含められません。

取り込んだデータの行が消えたのはなぜですか

65,536 行の制限です。Excel はそれより大きな取り込みを拒否せず、最初の 65,536 行を取り込み、クリックで通り過ぎてしまえるダイアログで警告するだけなので、ワークブックは完成しているように見えて実際には完成していません。XLSX への変換でこの制限は消えます。

XLS ファイルはセキュリティ上のリスクですか

なりえます。この形式は VBA マクロを含められ、拡張子には何の表示もなく、マクロ入りのスプレッドシートは史上もっとも効果的なマルウェアの運び屋の一つでした。XLSX や PDF への変換は、副産物としてマクロの中身を取り除きます。

日付がすべて四年ずれているのはなぜですか

そのワークブックが、1900 年基準ではなくその時代の Excel for Mac が使っていた 1904 年基準の日付を使っていて、その設定がうまく渡らなかったからです。まれですが、四年ずれた日付として実際に現れるのはまさにこの見え方です。

XLSX と CSV、どちらに変換すべきですか

ワークブックを保つなら XLSX です。数式、シート、書式、名前付き範囲はすべて残り、ファイルはたいてい半分以下になります。データベースやスクリプトへデータを移すなら CSV で、一つのシートの値以外はすべて失う代わりに得られるものです。