XLSXからCSVへの変換:ブラウザ上で動作するロッシー変換ツール
このツールは、アップロードされたExcelファイル(XLSX形式)から値を読み取り、区切り文字を選択し、CSV形式でダウンロード可能なファイルを生成する。すべての処理はブラウザ内で完結するため、ファイルが外部サーバーに送信されることはない。変換対象は最初のワークシートのみであり、その他のシートは無視される。数式は最終計算値で読み替えられ、セルの書式、色、フォント、結合はすべて失われる。
なぜ「フラット化」が必要か – XLSXとCSVの構造的断絶
XLSXファイルはZIP圧縮されたXMLの集合体であり、複数のワークシート、数式、セルごとのプロパティ(色、フォント、罫線、データ型)、結合セル、グラフなどを保持できる。これに対し、CSVはプレーンテキストの単一テーブルであり、値と区切り文字、そして引用符によるエスケープしか持たない。つまり、XLSXの持つリッチな構造はすべてCSVに収まらないため、変換は本質的に「ロッシー(損失あり)」となる。
このツールは、XLSXの持つ構造を強制的にフラット化する。数式はそのままでは意味をなさないため、最後に保存された計算値で置き換えられる。セルの書式情報は全て破棄される。結合セルは、左上のセルの値のみが残り、他の領域は空欄となる。複数のセル型(日付、通貨、パーセンテージ)は、日付がISOテキストになることを除いて、値の型を保持する。このため、元のExcelファイルが持つ情報の多くが失われることを理解した上で利用する必要がある。
変換で失われるもの(ロッシー変換の実態)
具体的に何が失われるのか、事実に基づいて列挙する。
- セルの書式: フォント、サイズ、太字、斜体、色、セルの塗りつぶし、罫線。これらはすべて無視される。
- データ型: 数値、日付、通貨、パーセンテージなど。日付はISO形式のテキスト(例:
2023-03-15T00:00:00.000Z)として書き出され、通貨記号は失われ数値のみが残る。 - 結合セル: 結合範囲の左上のセルの値のみが出力され、その他のセル(結合されていた領域)は空欄になる。
- 複数ワークシート: 最初のワークシートのみが変換される。2枚目以降のシートは完全に無視される。
- 数式: 数式自体は出力されず、最後に保存された計算結果(静的な値)のみが出力される。
- マクロ(VBA): アクティブコンテンツは無視され、影響を与えない。
- コメント、ノート: これらはCSVに含まれない。
- 先行ゼロ: 数値として保存されたセル(例:「00123」)は「123」に変換される。テキストとして保存されていれば「00123」のまま維持される。
CSVが苦手とするデータ – エッジケースと誤りの原因
CSVはシンプルであるがゆえに、特定のデータで問題が発生する。このツールは標準的な引用符処理を行うが、完全な防御はできない。
- 埋め込まれたカンマ: カンマ(,)が値に含まれている場合、その値は二重引用符(")で囲まれる。例えば元のセルに「Apple, Inc.」とあれば、CSV上では「"Apple, Inc."」となる。
- 埋め込まれた改行: セル内に改行が含まれている場合も、同様に引用符で囲まれる。改行を含むCSVは多くのパーサーで誤って解釈される可能性がある。
- 埋め込まれた引用符: 値に二重引用符が含まれている場合、その引用符は2つ重ねてエスケープされる(例:「彼は"そうだ"と言った」→「"彼は""そうだ""と言った"」)。この処理は標準的だが、アプリケーションによっては解釈に失敗する。
- 先行ゼロの消失: 数値セルの先行ゼロは失われる。例えば、郵便番号「00123」は「123」になる。回避するには、Excel上でセルの書式を「文字列」に設定しておく必要がある。
- 入れ子データ: CSVはフラットな表しか表現できない。複数の値が1つのセルに入っている(例えば、「A, B, C」などのカンマ区切りテキスト)場合、そのまま出力すると列と誤認される。このため、変換前にExcelファイルで入れ子データを複数の列に分割しておくか、他の区切り文字で連結するなどの事前処理が必要になる。
- BOM(Byte Order Mark): このツールはBOMなしのUTF-8を出力する。一般的なCSV変換ではUTF-8 BOMの有無が文字化けの原因になることがある。必要に応じて、出力ファイルをテキストエディタで確認することを推奨する。
区切り文字の選択と出力設定
このツールでは、カンマ(,)、セミコロン(;)、タブ(\t)の3つの区切り文字から選択できる。
- カンマ: 最も一般的なCSV区切り。多くのデータベース、スプレッドシート、統計ソフト(R、Python pandas等)で広くサポートされる。ただし、データにカンマが多く含まれる場合は引用符によるエスケープが増加する。
- セミコロン: ヨーロッパ地域(フランス、ドイツなど)のローカライズ設定でよく使われる。
- タブ: TSV(Tab-Separated Values)として知られる。データにカンマや引用符が頻出する場合に便利。
CSV出力では、最初の行がヘッダーとして使用され、日付はISOテキストになり、空の行は削除される。
エラーメッセージと限界値
入力ファイルの状態やツールの制限に応じて表示されるエラーメッセージを以下に示す。
- 「Choose a CSV, JSON or XLSX file.」(対応形式以外のファイルが選択された)
- 「This file is too large. Use a file under 8 MB.」(ファイルサイズ上限超過)
- 「This Excel file could not be opened.」(Excelファイルが破損しているか、パスワード保護されている)
- 「This file has no table rows.」(データ行が存在しない空のシート)
- 「This table has more than 10,000 rows.」(行数上限超過)
- 「This table has more than 200 columns.」(列数上限超過)
- 「Conversion cancelled.」(ユーザーによる変換キャンセル)
- 「This conversion is taking too long. Try a smaller file.」(処理時間超過)
これらのエラーはすべてブラウザ側で検出されるため、ファイルがアップロードされる前に阻止される。
FAQ
Q: 数式は計算されますか? A: いいえ。ツールは最後に保存された計算値(静的な値)のみを読み取ります。数式そのものは評価されません。自動計算結果が必要な場合は、Excel側で事前に値として貼り付けておく必要があります。
Q: 日付は正しく変換されますか?
A: 日付はISOテキストとして出力されます(例: 2023-03-15T00:00:00.000Z)。日付形式を維持したい場合は、Excel側で日付をテキストとして保存しておく(例:TEXT関数で文字列化)必要があります。
Q: 複数のワークシートがある場合、どうなりますか? A: 最初のワークシートのみが変換されます。2枚目以降は完全に無視されます。各シートを個別に変換したい場合は、事前にそれぞれを別のExcelファイルとして保存してください。
Q: 変換後にデータが乱れるのはなぜですか? A: 原因は主に以下の3つです。1) セル内にカンマや改行が含まれている(引用符処理の問題)、2) 先行ゼロが消失している(数値として保存されたセル)、3) データ型が保持されていない(日付がISOテキストになるなど)。特に1番目は、CSVをExcelで直接開いた場合に列のずれとして顕著に現れます。出力ファイルをテキストエディタで確認し、必要に応じて別の区切り文字を試すか、元のExcelデータを調整してください。
Q: ファイルサイズの上限はいくつですか? A: アップロードできるXLSXファイルのサイズは最大8MBです。ファイルサイズが8MBを超える場合、「このファイルは大きすぎます。‹max›以下のファイルを使用してください。」というエラーメッセージが表示されます。
Q: マクロ(VBA)は処理されますか? A: いいえ。マクロは実行されません。また、マクロを含むファイルは開く際にエラーになる可能性があります(「このExcelファイルを開けませんでした。」)。マクロを含むファイルを変換する場合は、事前にExcelで開いてマクロを無効にした状態で保存し直す、またはマクロを削除してください。