いきなりですが問題です.
テキストエディタでファイルを新規作成します.中身を「"」の1文字だけにして,sample.csvという名前で保存し,Excelで開いたら,どのように表示されるでしょうか.
さっそくですが解答です.どのセルにも何も表示されません.
ところで,中身が「"」の1文字だけというファイルは,テキストエディタを使用することなく,Linuxが使えるなら*1,以下のコマンドで作成できます.
echo -n '"' > sample.csv
echoコマンドのオプション「-n」は,改行を出力しないという意味です.
続いてですが問題です.
以下のコマンドで作成したsample2.csvを,Excelで開いたら,どのように表示されるでしょうか.
echo '"' > sample2.csv
sample.csvと同じだろう…と思いながら,実際にやってみると,ちょっと面白いことが起こりました.1行目だけ,行の高さが,2行目以降の倍になりました.
ただし何回か,閉じて開いてしていると,sample.csvと同じ表示になることもありました.
ところで,Linuxでコマンド実行をすると,改行コードは「\n」(Line Feed)の1バイトです.「\r」(Carriage Return)を付けて,「\r\n」の2バイトとするよう,テキストエディタで改行コードを変更してsample2.csvを上書き保存し,Excelで開いても,同じ表示になりました.
さらにですが問題です.
テキストエディタでファイルを新規作成します.Excelで開いたらA1のセルに「"」が表示されるようなCSVファイルにするには,どのような中身にすればいいでしょうか.
これについても解答です.中身を「""""」,ダブルクォーテーションマーク4つにします.最初と最後のダブルクォーテーションマークは,中身を1個の値(文字列)とするもので,中の2つのダブルクォーテーションマークは,1文字のダブルクォーテーションマークを意味します.改行は,2バイト(\r\n)でも,1バイト(\n)でも,なしでも,違いがありませんでした.
最後にですが問題です.
テキストエディタでファイルを新規作成します.Excelで開いたらA1のセルに「+x」が表示されるようなCSVファイルにするには,どのような中身にすればいいでしょうか.
実はこの問題に対する答えが見つかっていません.単純に「+x」だけの中身では,Excelで開くと「#NAME?」と表示され,該当のセルの値が「=+x」に変わってしまいます.
Excelで,A1のセルに「+x」を書いて,Enterを押すと,また「#NAME?」の表示です.
こういうときはシングルクォーテーションマークです*2.A1の中身を消して,「'+x」と書いて,Enterを押せば,A1の表示は「+x」になってくれました.
ですがこれを上書き保存し,テキストエディタで開くと,中身は「+x」だけです.Excelで閉じてから開き直すと,また「#NAME?」の表示になりました.
テキストエディタでCSVファイルを編集して,「"+x"」としてみても,Excelでは「#NAME?」ですし*3,「'+x」や「'+x'」は,そのまま表示されてしまいました.
本記事作成のきっかけは,仕事中のちょっとしたトラブルです.研究のために10分くらいで書いたRubyスクリプトを実行したときに,「+x」を含むCSVファイルを生成しまして,Excelで開いて何じゃこれ,クォートしてもあかんのかと,この件だけで30分くらい,時間を費やしてしまいました.結局,「x+」に変換することで解決を図りました.