Tablora

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文字が表示されます。

エスケープに似た値を確認する

他の書き出しでのエスケープの形

入力値

表のテキスト
code _x0041_
区切り文字
,

結果

行数
2
列数
1
code
_x0041_
ファイルサイズ(バイト)
2302

識別子や数式に似た内容を保持するため、表計算ファイルのすべてのセルを文字列として保存します。