CSVをExcelで開く際は要注意! 末尾に謎のスペース!?

こんにちは!ジョイゾーでプラグイン開発エンジニアをしているナカです。

Sansan Data Hub 連携プラグインで扱う、SOC(Sansan Organization Code)という数字だけの企業コード。このSOCを含むCSVファイルの内容をkintoneにインポートした際、思わぬ落とし穴に気がつきました。

今回は、CSVファイルをExcelで開くときに注意したいポイントのひとつをご紹介します。

弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

CSVファイルをExcelで開くとき、桁数の多い数字や先頭ゼロを守るには文字列形式で開くのが鉄則です。
…とはいえ、ついダブルクリックで開いてしまうこと、ありますよね。

「数値」に変換すると起きること

ダブルクリックで開くと、12桁以上の数字は指数表記(例:1.23457E+12)になります。(標準の既定表示仕様)。
本来は文字列で開き直すべきですが、面倒だからと [セルの書式設定] → [数値] に変更して指数表記を解除し、そのままCSVを上書き保存していませんか?

実はこれ、末尾に半角スペースが追加されるという落とし穴があります。

桁数の多い数字の文字列のCSVファイルをExcelで開くと指数表記になってしまう
12桁以上の数字の文字列は自動で指数表記になる
CSVファイルをテキストエディタで開くと末尾に半角スペースが追加されていることがわかる

空白が入る理由と確認方法

[セルの書式設定] で「数値」を選んだ直後に、分類を「数値」から「ユーザー定義」に切り替えてみてください。

ユーザー定義を見ると「_」がついている
ユーザー定義を見ると「_」がついている

「負の数の表示形式」によっては、「種類:」に 「_」(アンダースコア)が付いているものがあります。
この _ は「指定した記号と同じ幅の空白を挿入する」という意味の書式記号で、指定する記号には負号(-)や括弧などが使われます。
これにより、括弧付き負数や負号つきの数値と正の数値を縦に並べたときに桁位置が揃います。

たとえば「-1234」という負の数の表示形式を選んだ場合、ユーザー定義では内部的に 0_ や #,##0_(環境やロケールによって異なる) となっており、負号の幅に合わせて正の数の末尾に空白を追加します。
この空白がCSV保存時に半角スペースとして書き出されるのです。

参考(Microsoft公式)
Guidelines for customizing a number format

半角スペースの影響

kintoneでは、例えばクエリで「”1234567890123″ に等しい」と指定しても、
“1234567890123 “(末尾に半角スペースあり)も同じ値として扱われます

そのため検索やフィルタではヒットしますが、外部システムや文字列比較処理では不一致と判定され、思わぬ不具合の原因になります。

実際にクエリで「”1234567890123″ に等しい」という条件でレコードを取得したときには、条件を満たすレコードが「存在している」のに、その中からカスタマイズで「”1234567890123″ に等しい」ものを抜き出そうとすると「存在しない」という現象に遭遇し、半角スペースが入っていたことが原因であると気がつくまで、「存在しているのに存在しない」のはなぜか悩みました。

まとめ

指数表記を解除して見た目が元に戻っても、実際にはデータに余分な空白が入っている場合があります。
そのため、テキストファイルウィザードなどを使って文字列として開く方法をおすすめします。(詳細はキントマニア記事「kintoneから書き出したCSVファイルの0が落ちないようにする方法」をご覧ください。)

あわせて、うっかりダブルクリックでExcelが起動してしまわないように、CSVの関連付けをメモ帳やテキストエディタに変更しておくと便利です。

Windowsの場合は、CSVファイルを右クリックして [プログラムから開く] → [別のプログラムを選択] を選びます。
そこで「メモ帳」などのエディタを選び、「常にこのアプリを使って .csv ファイルを開く」にチェックを入れて「OK」すると、今後ダブルクリックしてもExcelは起動しなくなります。

Macの場合は、CSVファイルを右クリックして「情報を見る(⌘+I)」を開き、「このアプリケーションで開く」からテキストエディタを選びます。さらに「すべてを変更…」をクリックすると、以降CSVファイルをダブルクリックしてもExcelではなく選んだアプリで開くようになります。

ちょっとした設定で、データの思わぬ変化やトラブルを防げますので、ぜひ取り入れてみてください。

弊社では初回開発無料の定額39万円でkintoneアプリを開発する定額型開発サービス「システム39」を提供しております。kintoneの導入やアプリ開発でお困りの方は、お気軽にご相談ください。
*Webでの打ち合わせも可能です。

   kintoneのアプリ開発はこちら <相談無料>    

同じカテゴリーの記事