Base64 を Excel ファイルにデコードする方法
- Base64 または data URI に Base64 を貼り付けます。
data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,のような接頭辞は残したままで構いません。テキストとして保存された長いエクスポートは .txt ファイルを開く を使ってください。 - 表の上に、「最初のシート:「Invoices」(ブック内に 3 枚)」のようにシート名を示す行が表示されます。表の上端には列の文字、左側にはシート自体の行番号が並ぶので、前の行が空でも 17 行目は Excel の 17 行目と一致します。
- 表の下のエントリ一覧には、ブックのすべての構成要素が 表示 と 保存 のボタン付きで並びます。
- ファイルをダウンロード を押して .xlsx を保存します。
シートを読むのに Excel やアドインは必要ありません。ページがブラウザ内でブックを展開して XML をパースし、Content Security Policy が Cloudflare のページビュー計測以外のネットワークリクエストを許可しないので、データは端末の外に出ません。
プレビューでのセルの値の表示
表には、Excel の表示形式を適用せずに、各セルに保存されている値を表示します。エクスポートを確認するにはたいていそれで十分ですが、一部のセルは Excel での見た目と異なります。
| Excel でのセル | プレビューでの表示 |
|---|---|
| テキスト | そのテキスト |
25%、$1,234.50 | 保存されている数値:0.25、1234.5 |
15/01/2025 | 日付のシリアル値:45672 |
12:00 | 1 日に対する割合:0.5 |
241 と表示される =C2*2 | ファイルに保存された結果の 241 |
TRUE、FALSE | TRUE、FALSE |
#DIV/0! | #DIV/0! |
| 結合セル | 左上のセルの値のみ |
シリアル値を日付に直すには、1899 年 12 月 30 日にその日数を足します。datetime(1899, 12, 30) + timedelta(days=45672) は 2025 年 1 月 15 日になります。古い Mac 版 Excel の設定である 1904 年日付システムを使うブックは、代わりに 1904 年 1 月 1 日から数えます。
数式の結果が表示されるのは、ファイルを書き出したプログラムが結果を保存していた場合だけです。Excel や LibreOffice は保存しますが、結果なしで数式だけを書き込むライブラリもあり、その場合セルは空で表示されます。
プレビューには制限があります。ブック内の順序で最初のシート(非表示でも、別のタブがアクティブでも、いちばん左のタブ)を、最大 200 行・30 列(A~AD)まで読みます。それを超えると「最大 200 行 × 30 列まで表示しています。」と表示されます。グラフ、画像、コメント、書式は表示されません。
XLSX、XLS、CSV、それ以外
| Base64 の先頭 | ファイル | 対処 |
|---|---|---|
UEsDB | XLSX、または ZIP ベースの別のファイル | XLSX と XLSM ならプレビューできます |
0M8R4KGxGuE | 古い .xls(Excel 97~2003)か、パスワード保護された .xlsx | ツールは「XLSX ではないようです」と表示し、DOC/XLS/MSG (OLE) と判定します。この 2 つは区別できず、拡張子 は xlsx のままです。古いブックなら xls と入力し、保護されたものなら xlsx のままにしてください |
77u/ | UTF-8 のバイトオーダーマーク付きのテキスト。たいていは CSV エクスポート | Base64 を CSV に変換 を参照 |
PD94bWwg | XML(<?xml )。Excel 2003 XML スプレッドシートの可能性あり | 拡張子 xml で保存すれば Excel で開けます |
ZIP ベースの形式のうち 2 つは注意が必要です。マクロ付きのブックには xl/vbaProject.bin が含まれます。プレビューは普通にできますが、拡張子が .xlsx だと Excel は開くのを拒否するので、ダウンロードの前に xlsm と入力してください。バイナリブック(.xlsb)は、シートを XML ではなく .bin ファイルに保存しています。ツールは XLSX と判定してエントリを一覧表示しますが、表は表示されず、xlsb として保存する必要があります。
ブックの代わりに CSV が送られてきた場合は、「これは XLSX ではなく CSV のようです。」と表示され、.csv としてダウンロード ボタンが付きます。Excel はどちらも開けます。
Base64 のスプレッドシートはどこから来るのか
レポートや会計の API は、生成したエクスポートを JSON の Base64 フィールドとして返します。自動化やローコードのプラットフォームは、ステップ間でファイルを Base64 文字列として受け渡すことがよくあり、メールはスプレッドシートの添付を Base64 の MIME パートとして運びます。逆にブックから文字列を作るには、Excel を Base64 に変換 を使ってください。
Python で Base64 のブックを読む
openpyxl パッケージを使えば、デコードしたバイト列から直接ブックを読めます。
import base64, io
from openpyxl import load_workbook
with open("export.b64") as f:
raw = base64.b64decode(f.read())
wb = load_workbook(io.BytesIO(raw), data_only=True)
ws = wb.worksheets[0]
for row in ws.iter_rows(values_only=True):
print(row)
data_only=True を指定すると、数式ではなく保存された数式の結果が返り、プレビューと同じ値になります。プレビューと違い、openpyxl は日付に表示形式を適用するので、上の例のセルは datetime(2025, 1, 15, 0, 0) として返ってきます。その他のデコード方法は Python での Base64 にあります。
よくある質問
Base64 を Excel ファイルに変換するには?
上に文字列を貼り付けて ファイルをダウンロード を押してください。ブックはエンコードされたバイト列そのままで decoded.xlsx として保存されるので、数式、書式、すべてのシートが元のまま残ります。
日付が 45672 のような数値で表示されるのはなぜですか?
Excel は日付を 1899 年 12 月 30 日からの日数として保存し、画面上でだけ日付の書式で表示しているからです。プレビューには保存された値が表示されます。45672 は 2025 年 1 月 15 日で、ファイルを Excel で開けば再び日付として表示されます。
ほかのシートも見られますか?
表に表示されるのは最初のシートだけです。ほかのシートは xl/worksheets/sheet2.xml などとして一覧に表示され、表示 で生の XML を見られます。XML の中では、テキストのセルは xl/sharedStrings.xml を指す番号になっています。
Excel で「ファイル形式または拡張子が正しくありません」と表示されるのはなぜですか?
拡張子が内容と一致していないからです。マクロ付きのブック(xl/vbaProject.bin を含む)は .xlsm で保存する必要があり、OLE と判定された古いブックには .xls が必要です。拡張子 に正しいものを入力して、もう一度ダウンロードしてください。