Tablora · ライブラリ
SpreadsheetMLのエスケープに見える文字列を保持する
_x0041_のような文字列は、XLSXファイル内のエスケープコードです。文字列保持の書き出しツールはこれを保護し、セルにはAではなく_x0041_が表示されます。
XLSX形式が予約している形
XLSXファイルの中の文字列には、_xの後に16進数4桁とアンダースコアが続く形のコードを含められます。_x0041_などです。ファイルを読む表計算ソフトは各コードを、それが表す文字に変換するので、_x0041_は大文字のAに、_x000D_は復帰になります。ソフトにとっては便利ですが、システムの識別子、データベースの項目名、ログのトークンなど、本物の値がたまたまコードの形をしていると問題になります。
文字列保持の書き出しツールは、書き込む前にそうした形をすべて保護します。先頭のアンダースコアにエスケープを加え、続く文字をそのまま表示するよう表計算ソフトに伝えます。これは、XML向けにアンパサンドや山かっこをエスケープするのとは別の手順です。
影響を受けるのは正確な形だけです。アンダースコア、x、16進数の4文字、閉じるアンダースコアの並びです。_x41_や、閉じるアンダースコアのない_x0041のようなものは、ファイルでも表計算ソフトでもただの文字です。
_x0041_の例
このページの例には、codeという名前の列が1つあり、値は_x0041_です。ブックで期待されるセルの文字は_x0041_で、明示的な文字列として書き込まれるので、表計算ソフトにとっては数式でも数値でもありません。tablora-table.xlsxを開くと、セルにはAの文字ではなく、入力した7文字が表示されます。
エスケープに似た値を確認する
- 元データで、アンダースコアの後にxと0〜9・A〜Fの4文字が続き、さらにアンダースコアで終わるものを探します。16進数の大文字も小文字も、どちらもコードとして扱われます。
- その値が文字どおりの意味であることを確認します。元データ自体にエンコードされた文字列が含まれている場合は、ここではなく、それを作ったシステムでデコードしてください。
- 表を貼り付けて「計算」を押し、プレビューを確認します。
- 「ダウンロード (XLSX)」を使い、表計算ソフトのセルを元の値と比べます。
- セル内の復帰も同じように保護されるので、これも失われません。
他の書き出しでのエスケープの形
- ブラウザのツールからダウンロードしたCSVでは、_x0041_はただの文字として書き込まれます。CSVにはこのような符号化がなく、それを適用するのは表計算ソフトによるXLSXの読み込みだからです。
- TabloraアプリのXLSX書き出しはアンパサンドやかっこをエスケープしますが、この保護は加えません。そのため、_x0041_を含むページから読み取ったセルは、デコードされて表示されることがあります。そうした値は、アプリからCSVを書き出すか、ここの文字列保持の書き出しツールにセルを貼り付けてXLSXをダウンロードしてください。
- こうした形は普通の表ではまれです。見つかった場合はたいてい技術的なシステムから来たもので、比較用に元のファイルを残しておく手間をかける価値があります。
入力値
- 表のテキスト
- code _x0041_
- 区切り文字
- ,
結果
- 行数
- 2
- 列数
- 1
| code |
|---|
| _x0041_ |
- ファイルサイズ(バイト)
- 2302
識別子や数式に似た内容を保持するため、表計算ファイルのすべてのセルを文字列として保存します。