セル内改行とCSVファイル

エクセルバカ相手の「ごっこネタ1)」である(エクセルバカネタ)。
NOTES
1) エクセルバカが能もないのにやりたがる「バイナリごっこ」「文字コードごっこ」「UTF-8ごっこ」「改行ごっこ」「エンディアンごっこ」「16進数ごっこ」「CSVごっこ」「暗号ごっこ」などを総称したもの。小学校程度のアタマしかない者が微分方程式を解こうとするのに似ている。

Excelのセル内に改行のあるシートをCSVファイルにした場合、どのような「形」のCSVファイルになるのか。それを確認してみたものである。

こんなシートを作る。

CSVファイルで保存しようとすると次のようなメッセージが出る。


「文字コード、改行コード、バイナリ」などとエクセルバカが能もないのに言いたがることを書いていないところが、実に新鮮に感じてしまうところである(笑)。
LOG
222.7.99.168 [28/Mar/2014:05:26:29] vba 全シートcsv保存
27.87.1.227 [24/Oct/2014:15:19:39] excel vba csv保存時のメッセージ解除
この点については「全シートを一挙にCSVファイル化する」を参照。
当然こんな鬱陶しいメッセージは出ない。Sheet1.csv , Sheet2.csv , Sheet3.csv , ... などが一挙にできてしまう。

そのファイルをExcelで読み込む。保存時のまま再現されている。

そのファイルを見てみる(TeraPad)。

そのファイルを見てみる(メモ帳)。
この時代のメモ帳はCRLF改行だから、LFだけでは改行されない(2020/07/08)。

そのファイルを16進ダンプしてファイル構造を確認する。

Windows8.*でのこれと同種の画像はここを参照。

重要
1.セル内改行の改行はLFである(デフォルトでは)。
2.シートにセル内改行がある場合、CSVファイルにするとそのデータは「""」で囲まれる。
3.これで作成されるCSVファイルは一般のCSVファイルではない(互換性がない)
しかし、これはExcelでは読み込めるから、Excelに特化したCSVファイルである。


セル内改行をCRLFにする

上で作成したCSVファイルをすべてCRLF改行にして「セル内改行2.csv」を作成する。

そのファイルを16進ダンプしてファイル構造を確認する。

そのファイルをExcelで読み込む。セル内改行は維持されたままである。


重要
セル内改行では、そのデータが「""」で囲まれていることが決定的に重要である。
その改行コードが何であるかは問題にならない

ちなみに、Excelでは改行コードが何であってもすべてそれを改行として認識する
この点については「Excelと改行(ipc_0014)」を参照。
LOG
202.228.139.164 [09/May/2017:14:46:43] Excelに改行コードを認識させる
219.163.28.218 [27/Mar/2016:14:07:05] Excelに改行コードを認識させる
箸にも棒にもかからないバカである。
210.188.188.43 [13/Apr/2017:14:12:54] csvファイルで保存すると改行されてしまう
221.241.243.114 [02/Nov/2016:09:33:14] エクセル CSV 改行なし
182.251.242.46 [19/Aug/2016:12:28:02] csv 改行コードが見つからない
211.14.158.177 [19/Aug/2016:12:03:05] vba 改行コードがないCSファイル
118.155.203.6 [01/Apr/2016:13:01:24] csvファイル 改行がない
こういうバカが「CSVごっこ」「改行ごっこ」をしているのである。
エクセルバカの「改行ごっこ」などは、改行のことなど何にもわかっていない文字通り低能のバカたちの「バカ騒ぎ」「カラ騒ぎ」にすぎない。

LOG
122.212.155.138 [27/Dec/2016:13:53:41] エクセル セル内改行コード 変換
こんなことをしても意味はないことは上に書いた通りである。無知蒙昧のエクセルバカの「改行ごっこ」の実態がよくわかる。


セル内改行を削除

セル内改行を削除する。

そのファイルを見てみる(メモ帳)。「""」で囲まれない普通のCSVファイルになっている。

参考
セル内改行のあるセルを着色して目立たせる(ipc_0044)
セル内改行を一括して削除する(ipc_0042)

- 2013/03/20 -



改悪退化OSでの実行例

見かけや外観だけを変えて新製品だと思わせるMicrosoftの愚民相手の朝三暮四商法ではOSやソフトも退化の一途である。
「サル真似OS」「指先OS」の不細工な改悪退化OSである「Windows 8.*」のExcelで実行したものである。
さすがドシロウトの定番、進歩のない骨董ソフトのExcelである。


ここでも「セル内改行」ではその改行コードが何であるかは問題にならないということがわかる。データが「""」で囲まれていることこそが重要なのである。これはまたエクセルではどの改行コードでも改行として認識するということとも符合する。

下のファイルのセル内改行はCRLFである。

下のファイルのセル内改行はLFである。



さて、ここまで見てくると、エクセルのセル内改行がデフォルトでLFになっている理由がおぼろげながらわかってくる(推測)。セル内改行を含んだCSVファイルをExcel/VBAのLine Inputで読み込む場合、Line InputはLFを改行と認識しないから、セル内改行があっても、それを1行のデータとして読み込むことが可能になる。CSVファイルの操作(ipc_0145)を参照。

Microsoftがこういう整合性を考慮してこのような仕様にしていたのかどうかはもちろん不明である。なお、このソースはファイルの読み込み自体ができないエクセルバカにはどれも無意味な内容である。しかし、そんなバカほど見たがるから困ったものである。つまるところ基本がわかっていないのである。


QuotDelete.frm

CSVファイルのすべてのセル内改行を削除することもできる。
なお、このツールではLine Inputは使っていない
対象ファイルをすべてバイトデータとしてバイト単位的(Binary)に処理している。

この方法はファイルをバイナリ的(バイト単位的)に処理できて応用範囲が広い有効な方法である。以後、「エクセルバカのごっこネタ」ではこの方法をメインに使う。


SetCellText.frm

任意のセルにセル内改行付のテキストを挿入する。
元のファイルの改行コードにかかわりなく、このフォームで指定した改行コードがセル内改行に設定される。セル内改行の改行コードはどんなものであってもよいからこれは当然可能である(下図参照)。
ただし、VBAのLine Input関数で読み込む場合はその選択に注意が必要である(上記)。




エクセルバカの検索で「CSV 改行」というのが異常に多い。こんな無知蒙昧の権化のような連中には「改行」の処理などは元々無理なことである。そういえば、その昔、知り合いの魚屋のオネーちゃんが、エクセルでCSVの改行がどうのこうのと言っていた。この高卒女のオツムの程度ではどうせエクセルしか使わないのだから、そんなことをあれこれやったところで無意味なことである。そう思って相手にもしなかった。こういう検索に出てくるのも多分その程度のヤカラであろう。
LOG
202.248.96.20 [17/Jul/2015:09:52:44] エクセル 改行コード 設定 CSV
133.127.68.150 [29/Mar/2015:12:58:07] EXCEL 改行コード 文字コード 設定
こういうのを見ると、どうやら、単にExcelの画面でシートが表示されていて、それを*.csv(ファイル)として保存するときに、そのときの改行コードや文字コードの指定または設定のようである。

要するに、プログラミング的にVBAで改行の操作をするというのではなく(エクセルバカにはそんな能力は当然ないが)、そんなものを使わずにエクセルの操作だけで改行や文字コードをなんとかしたいというものである。これは「ないものねだり」で「無理な相談」である。

参考
VBAを使ったCSVファイルの列削除/列編集と改行コード/文字コードの変換(ipc_0082)


CSVファイル作成ツール

エクセルバカに改行など無意味なことだが、それにしても能のないエクセルバカの改行ごっこ屋が異常に多い。そこで、「CSVファイル作成ツール」に、単にシート上のデータをCSVファイル化するルーチンを追加した(CSVMakerFlat.frm@FileConvert.xlsm)。

従来はCSVファイルにする範囲を指定してから、CSVファイルを作成していた(CSVMaker.frm@FileConvert.xlsm)。これはそんな範囲指定はせずにズバリ、シートの全データをCSVファイルにするものである。


Shift_JISのLF改行のCSV

これを呼び出して、改行コードと文字コードを選択する。
もちろん範囲指定などはする必要はない。

「作成」ボタンを押すと、指定の設定でCSVファイルが作成される。

作成ファイルの確認である。指定した通りになっている。


UTF-16のLF改行のCSV

念のためUTF-16でLF改行もやってみよう。

作成ファイルの確認である。指定した通りになっている。
BOMを付けていないから通常のtypeコマンドでは表示できない(文字化けする)。
BOMの有無にかかわらず表示するtype_unicode.exe(spc_0027参照)を使って表示すると正常なUTF-16/LEのLF改行のCSVファイルになっていることがわかる。これは16進ダンプをしても確認できる。


UTF-8のLF改行のCSV

念のためUTF-8でLF改行もやってみよう。

作成ファイルの確認である。指定した通りになっている。
BOMを付けていないから通常のtypeコマンドでは表示できない(文字化けする)。
BOMの有無にかかわらず表示するtype_utf8.exe(spc_0027参照)を使って表示すると正常なUTF-8/LEのLF改行のCSVファイルになっていることがわかる。 これは16進ダンプをしても確認できる。


CSVファイルとBOM

CSVファイルの内容を確認する(メモ帳などで手軽に中身を見るなど)ときはBOMはあるほうが便利だが、CSVファイルを現実的な用途に使うとすればBOMは付けないほうが扱いやすい。カンマで切り分けたときに最初のデータだけにBOMが付くことになるからである。なお、BOMを付けない場合は事前にデータがどんな方式でエンコードされているか(UTF-8かUTF-16か)は知っておく必要はある。

参考
文字コードと改行コードを指定してCSVファイルを作成する(ipc_0021)


TSVファイルの作成

エクセルバカの大好きな「TSVファイル」作成ルーチンを追加したものである。デフォルトでは「CSV形式」になる。
CsvTsvMaker.frm

参考
CSV/TSVファイル編集ツール(ipc_0167)


LOG
118.243.32.61 [02/Dec/2018:10:31:22] tpc_0060 excel csv セル内 改行
tpc_0060は「セル内改行とCSVファイル」というタイトルで、CSVファイルのセル内改行について書いたものである。しかし、これを「csv セル内 改行」と明確に書いている例は非常に少ない。年に1回あるかないかである。ことほどさように正確に書いているのは稀有なのである。圧倒的多数は「CSV 改行」だけなのである。エクセルバカがいかに貧弱な言語能力しかないかがよくわかる。

しかし、考えてみればエクセルバカの世界にはExcelしかない。この連中が「改行」といえばシート上で見えている「改行」になるのは当然の成り行きである。

[総括] エクセルバカが大好きな語は「バイナリ、UTF-8、改行、CSV」である。いずれもネコに小判、ブタに真珠である。

この4語を入れておけばエクセルバカがハエのように寄ってくる。常識も基礎知識もない連中がこれらを自分で扱えることはないだろう。




参考資料(a1)
愚民列伝(b1)
愚民列伝(b2)

CSVに寄ってくる 人目のオバカ(since 2018/06/17)。



タコの殿堂
アンタ、珍しくまともなことを書いたわね。酔っ払ってんじゃないの(笑)。バカ相手に教育ボランティアしてもムダかもよ。