ODS

ODSファイルとは

表計算の開かれた標準。数式も複数シートも扱え、特定の会社に縛られません。

ODS とは何か

ODS はコンテナです。誰か別のものが符号化した流れを、中に収めておく外殻です。 編集のために使われます。

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

ODS はどこから来たのか

OASIS が 2005 年に公開しました。 仕様は ISO/IEC 26300 です。

古さが役に立つのは、ごく実務的な理由からです。形式が古いほど、それを覚える時間が多くのプログラムに与えられてきたということだからです。

仕様は公開されています

仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。

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

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

どんな種類の文書か

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

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

自分を守るために何を備えているか

ODS ファイルは必要なら暗号化を備えています。

暗号化されたファイルは、変換の前に解除する必要があります。ここでも、ほかのどこでも同じです。パスワードはコンバーターが通り抜けられる類のものではありませんし、通り抜けられると称するものには、そもそもファイルを渡すべきではありません。

ODS を開けるのは何か

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

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

ブラウザーで開く

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

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

作業のための形式です

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

誰の所有物でもないスプレッドシート

ODS は OpenDocument のスプレッドシートの半分で、OASIS が標準化し、ISO/IEC 26300 として発行されています。LibreOffice Calc の標準形式であり、これが存在するのは、スプレッドシートがしばしば会計記録や研究データ、公的な台帳といった重要なものの唯一のコピーになるからで、それを一社の製品に縛り付けることは、いずれ誰かが責任を負うことになるリスクです。

公的機関がこれを指定するのはこのためです。いくつかの国や地域の政府は、公開・受理する文書に OpenDocument を求めていて、その理由は技術ではなく調達の観点によるものです。複数の実装を持つ公開された標準は、一社の判断で使えなくなることがありません。

XML を詰めた ZIP、それがもたらすもの

ODS を .zip に改名して開いてみてください。中には本文、スタイル、メタデータ、設定用の XML 文書と、埋め込まれた画像やグラフを収めたフォルダーがあります。スプレッドシート全体 — すべてのセル、すべての数式、すべての書式 — が読めるテキストです。

これには実務上の利点が二つあります。壊れたファイルでも部分的に復旧できることが多く、アプリケーションがアーカイブ全体を拒否しても、本文の文書だけは読める場合があります。またこの形式はスクリプトから扱いやすく、プログラムから ODS を生成したり読み込んだりするのは、バイナリを逆解析するのではなく XML を扱うだけの作業です。多くの行政・学術系のツールがこの形式を出力するのはこのためです。

Excel との往復で実際に崩れる部分

普通の作業内容はどちら向きにも問題なく引き継がれます。値、数式、複数シート、セルの書式、名前付き範囲、グラフです。これは明言しておく価値があります。形式をまたぐスプレッドシート作業の評判は、実際よりも悪く語られがちだからです。

崩れるのは主に三箇所です。マクロは完全に失われます。Excel は VBA を、LibreOffice は独自のスクリプトシステムを使い、その間には翻訳のしようがありません。ピボットテーブルは両方のアプリケーションが互換性のない方法で実装していて、静的な値としてしか届かないことがよくあります。そして複雑な条件付き書式は簡略化される傾向があります。数値の格子であるワークブックは完璧に変換され、アプリケーションと化しているワークブックはそうはいきません。

数式の名前空間と、ODF- という接頭辞

ODS をテキストエディターで開くと、数式は奇妙に見えます。セル参照は [.A1] のような形で現れ、式全体の先頭にはどの数式言語を使っているかを宣言する接頭辞が付きます。これは OpenFormula という、仕様で定められた数式構文で、この接頭辞があることで、ファイルは自分がどの方言で書かれたかを正直に示せます。

ファイルが行き来するとき、これが重要になります。Excel の関数名で書かれた数式は Calc のネイティブ構文で書かれたものとは違う形で保存されることがあり、その間の翻訳が、たまに起きる取り込み後の数式エラーの原因になります。片方のアプリケーションにしか存在しない関数名 — 数十個ほどあります — は、何か別のことを静かにしてしまうのではなく、エラー値になります。これは正しい失敗の仕方です。

何を、誰に送るべきか

編集が必要な Excel ユーザーには XLSX です。現行の Excel は ODS を開けますが、自分の形式を開くときほどの忠実さはなく、受け取った側にそれを発見させる必要はありません。

読むだけでよい相手には PDF です。どこでも開け、誰が見ても同じで、うっかり変更される心配もありません。

ODS そのものを送るべきなのは、公的機関やオープンフォーマット方針、LibreOffice を使う共同作業者など、相手がそれを求めている場合です。そして自分の原本としても ODS を残しておくべきです。二十年後にも開ける可能性が高いコピーだからです。

上限と、スプレッドシートが不向きになる境界

Calc は一つのシートあたり百万行強、16,384 列まで扱え、これは XLSX と同じで、人が手で保守する用途には十分すぎるほどです。

その規模になると、そもそもスプレッドシートという道具自体が不向きになります。数十万行を持つスプレッドシートは再計算が遅く、数式を誤ってドラッグするだけで壊れやすく、問い合わせもできません。その上限に近づいているなら、正直な答えはもっと大きなスプレッドシートではなく、データベースや列指向の形式です。CSV を書き出し、Parquet や SQLite に取り込み、スプレッドシートは実際に人が読む要約のためにとっておくのが妥当です。

データを出し入れする

CSV はどちら向きにも頼りになる主力です。あらゆるシステムが取り込み・書き出しに対応していて、形式をまたぐ作業を脆くする書式情報を一切持たずに値だけを運びます。Excel 側での注意点はいつもどおりで、開くのではなく取り込みとして読み込み、識別子の列はテキスト型に指定して、先頭のゼロや商品コードを守ってください。

そして CSV に置き換えるのではなく、ODS のほうを残しておいてください。スプレッドシートは数式や構造、意図を保持していますが、CSV は値のスナップショットにすぎません。スプレッドシートから CSV を作り直すのは簡単ですが、CSV からスプレッドシートを再構築するのは半日仕事で、しかもわずかに違うものができあがります。

基本情報

ODSフォーマットの識別子と出自。
拡張子.ods
メディアタイプapplication/vnd.oasis.opendocument.spreadsheet
公開元OASIS
初版2005
仕様ISO/IEC 26300

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

ODS ファイルを開くには

LibreOffice Calc なら標準対応していて、しかも無料です。Google スプレッドシートも取り込め、現行の Excel もそれなりの忠実さで読み込めますが完璧ではありません。相手が誰か分からない場合は、XLSX や PDF に変換するのが確実です。

Excel は ODS ファイルを開けますか

開けますが、XLSX を開くときほどの忠実さはありません。値、数式、書式は引き継がれますが、マクロは二つのアプリケーション間に橋渡しがなく失われ、ピボットテーブルは静的な値として届くことが多く、複雑な条件付き書式は簡略化されます。

ODS を XLSX に変換すると何が失われますか

普通の作業内容 — 値、数式、シート、書式、名前付き範囲、グラフ — は引き継がれます。マクロは二つのアプリケーションが互換性のないスクリプトシステムを使っているため完全に失われます。ピボットテーブルと複雑な条件付き書式も確認すべき箇所です。

なぜ政府は OpenDocument を求めるのですか

複数の実装を持つ、独立して公開された標準だからです。この形式で保存された記録は、一社の判断で使えなくなることがありません。技術的な好みというより、調達や記録保存の要件です。

ODS ファイルは何行まで扱えますか

一つのシートあたり百万行強、16,384 列までで、XLSX と同じです。それよりずっと手前で、スプレッドシート自体が不向きな道具になります。数十万行に達すると再計算が遅くなり問い合わせもできなくなるため、データベースや列指向の形式のほうが適しています。

LibreOffice なしで ODS ファイルを編集できますか

Google スプレッドシートも Excel も開けます。ファイルは XML を詰めた ZIP なので、プログラムが逆解析なしに直接読み書きできます。この性質があるからこそ、多くの行政・学術系のツールがこの形式を出力しています。